NSFetchedResultsController no dispara el método delegado después de combinar la actualización del hilo de fondo

Tengo un NSFetchedResultsController y algunas operaciones que insertan y actualizan objetos administrados en subprocesos separados a través de NSOperationQueue.

El FRC se ve así, tenga en cuenta que he configurado el caché a cero:

[NSFetchedResultsController deleteCacheWithName:nil];
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:nil cacheName:nil];

ada operación roscada tiene su propio contexto de objeto administrado y dispara mergeChangesFromContextDidSaveNotification al MOC principal cada vez que guarda los cambios.

El código que uso para fusionar contextos se ve así:

- (void)mergeContextChanges:(NSNotification *)notification
{
    NSManagedObjectContext *context = [fetchedResultsController managedObjectContext];

    if([NSThread isMainThread] == NO)
    {
        [self performSelectorOnMainThread:_cmd withObject:notification waitUntilDone:NO];
        return;
    }

    NSSet *updated = [[notification userInfo] objectForKey:NSUpdatedObjectsKey];

    for(NSManagedObject *thing in updated)
    {
        NSLog(@"Background thread updated %@", [thing description]);
    }

    for(NSManagedObject *thing in updated)
    {
        [[context objectWithID:[thing objectID]] willAccessValueForKey:nil];
    }

    [context mergeChangesFromContextDidSaveNotification:notification];
}

Puedo confirmar mirando los registros que cada vez que las operaciones en segundo plano insertan o actualizan datos, mi método mergeContextChanges: se llama con los valores de inserción / actualización adecuados.

El problema es que al fusionar inserta están activando los métodos de delegado de FRC (por ejemplo, controllerDidChangeContent :) correctamente, fusionando actualizaciones no le indica al FRC que active sus métodos de delegado.

s bastante extraño, también puedo confirmar que el FRC dispara a sus delegados correctamente si ejecuto las actualizaciones en elHilo principa utilizando lamain principal.

¿Cómo puedo hacer que el FRC active sus métodos delegados cuando se fusionan los MOC actualizados?

Más información Parece que usa cualquier MOC que no sea el MOC principal e intenta fusionar actualizaciones al MOC principal tiene los mismos resultados; FRC se niega a notarlo.

Respuestas a la pregunta(1)

Su respuesta a la pregunta