• Download Gist
AQPerThreadManagedObjectContext.m
Objective-C
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
static NSString * const AQPerThreadManagedObjectContext = @"AQPerThreadManagedObjectContext";
 
void StoreManagedObjectContextForCurrentThread( NSManagedObjectContext * context )
{
[[[NSThread currentThread] threadDictionary] setObject: context forKey: AQPerThreadManagedObjectContext];
}
 
NSManagedObjectContext * PerThreadManagedObjectContext( void )
{
NSManagedObjectContext * result = [[[NSThread currentThread] threadDictionary] objectForKey: AQPerThreadManagedObjectContext];
if ( result != nil )
return ( result );
NSManagedObjectContext * moc = [[NSManagedObjectContext alloc] init];
[moc setMergePolicy: NSMergeByPropertyObjectTrumpMergePolicy];
[moc setPersistentStoreCoordinator: GetPersistentStoreCoordinator()];
StoreManagedObjectContextForCurrentThread( moc );
[moc release]; // now owned by the thread dictionary
return ( moc );
}

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.