我正在后台线程中更新我的核心数据。我已经制定了政策。更新程序类更新并保存数据。
NSManagedObjectContext *defaultContext = [(AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
NSManagedObjectContext *context = [[NSManagedObjectContext alloc] init];
[context setPersistentStoreCoordinator:[defaultContext persistentStoreCoordinator]];
[context setMergePolicy:NSMergeByPropertyObjectTrumpMergePolicy]; //step 2
[defaultContext setMergePolicy:NSMergeByPropertyStoreTrumpMergePolicy];
Updater *updater = [[Updater alloc] initWithUsername:@"test2"
password:@"test2"];
[updater setContext:context];
[updater update];
[updater release];
[self setUpdating:NO];
dispatch_sync(dispatch_get_main_queue(), ^{
completion();
});
});
我的朋友告诉我,我需要某种通知来通知我原来的默认上下文来更新数据。我需要吗?或者我所做的就足够了?如果是这样,我将如何做到这一点?
答案 0 :(得分:0)
是的,您需要观察NSManagedObjectContextDidSaveNotification以合并这两个上下文。
我从“//步骤2”中认识到您已经看过文章CORE DATA AND THREADS, WITHOUT THE HEADACHE所以我建议您再次查看它,并且本文还引用了necessary code通知观察。