Core data newbie here. I'm trying to change the default NSManagedObjectContext
of an NSPersistentDocument
, in order to initialise and use it with NSMainQueueConcurrencyType
.
Currently I'm doing it in -windowControllerDidLoadNib:
like this:
- (void)windowControllerDidLoadNib:(NSWindowController *)aController
{
[super windowControllerDidLoadNib:aController];
NSManagedObjectContext *newMOC = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
[newMOC setPersistentStoreCoordinator:[self.managedObjectContext persistentStoreCoordinator]];
[self setManagedObjectContext:newMOC];
}
This seemingly works fine. But I'm wondering if initialisation of the MOC in -windowControllerDidLoadNib:
is the best thing to do, or whether it should be placed somewhere else and/or initialised in a different way.
Thanks for any help.
The preferred pattern is the "pass-the-baton" approach where you pass the managed object context down to the child view controllers. Give your controllers a managed object context attribute and simply pass it on when you present them.