¿Cómo combinar los cambios de un contexto de objeto administrado secundario a otro a través de un MOC principal?

Hola (pregunta real en la parte inferior).

En iOS 5 hay una introducción de contextos de objetos administrados padre-hijo en CoreData.

Tengo un NSFetchedResultsController estándar y UITableVeiwController trabajando juntos para obtener una lista maestra de la tienda. El contexto del objeto gestionado del controlador de resultados recuperados es un elemento secundario con un contexto principal:

// AppDelegate.m

- (NSManagedObjectContext *)managedObjectContext
{
    if (__managedObjectContext != nil)
    {
        return __managedObjectContext;
    }

    __managedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];

    // primary managed object context has NSPrivateQueueConcurrencyType
    [__managedObjectContext setParentContext:[self primaryObjectContext]];
    return __managedObjectContext;
}

El controlador de vista de tabla presenta un controlador de vista modal para agregar un nuevo registro, pero utiliza un contexto de objeto administrado separado para hacerlo (este contexto es otro elemento secundario del contexto principal). Este contexto se guarda en una devolución de llamada delegada en el controlador de vista de tabla:

- (void)addGame
{
    // New child context

    [self setBuildManagedObectContext:[[NSManagedObjectContext alloc] init]];
    [[self buildManagedObectContext] setParentContext:[[[self team] managedObjectContext] parentContext]];

    Team *buildTeam = (Team *)[[self buildManagedObectContext] objectWithID:[[self team] objectID]];
    Game *buildGame = [NSEntityDescription insertNewObjectForEntityForName:@"Game" 
                                                inManagedObjectContext:[self buildManagedObectContext]];


    [buildGame setTeam:buildTeam];

    BuildViewController *buildVC = [[BuildViewController alloc] initWithGame:buildGame delegate:self];
    UINavigationController *navCon = [[UINavigationController alloc] initWithRootViewController:buildVC];
    [[self navigationController] presentViewController:navCon animated:YES completion:nil];
}

#pragma mark - Build view controller delegate

- (void)buildViewController:(BuildViewController *)controller didFinishWithSave:(BOOL)save
{
    if (save)
    {
        NSError *error = nil;
        if (![[self buildManagedObectContext] save:&error])
        {
            NSLog(@"Error saving new game");
            abort();
        }
    }
    [self setBuildManagedObectContext:nil];
    [[self navigationController] dismissViewControllerAnimated:YES completion:nil];
}

Pregunta

Entendí que con los contextos padre-hijo, el contexto padre obtendría la notificación de guardado de su hijo y luego notificaría a todos sus hijos. Entonces, en mi ejemplo, el contexto de compilación debería activar el contexto primario para indicarle al controlador de resultados obtenido que combine los cambios.

Esto no me está sucediendo, los registros se han creado con éxito, pero el controlador de resultados recuperados no los está recogiendo. Sé que solía ser el caso en el que tenía que implementar su propia fusión desde la notificación de guardado (como se ve en CoreDataBooks). Pero pensé que los contextos niño-padre resolvieron este problema. Traté de salvar al niño y luego al padre, pero no pareció hacer la diferencia. ¿Alguien puede explicarme esto por favor? (Nota: Estos no son contextos en hilos separados / de fondo)

Muchas gracia

Respuestas a la pregunta(2)

Su respuesta a la pregunta