Created
May 28, 2010 14:17
-
-
Save AlanQuatermain/417195 to your computer and use it in GitHub Desktop.
A set of simple wrapper functions to get per-thread NSManagedObjectContext instances. When creating main context (i.e. in app delegate) pass it to StoreManagedObjectContextForCurrentThread(). Then just call PerThreadManagedObjectContext() anywhere you nee
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 ); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment