我使用后台线程来执行长时间运行的任务,包括从服务中提取数据并通过CoreData将记录插入数据库.正如许多答案所示,我正在观察NSManagedObjectContextDidSaveNotification通知.我正在使用这两种方法.在mergeChanges方法中,我在通知对象中看到我的插入,但在两个方法完成后,我的主MOC仅显示后台线程之前的更改.为什么它不反映后台线程的新变化.我错过了什么?
- (void) registerContextDidSaveNotificationForManagedObjectContext: (NSManagedObjectContext*) moc {
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self
selector:@selector(mergeChanges:)
name:NSManagedObjectContextDidSaveNotification
object:moc];
}
- (void)mergeChanges:(NSNotification *)notification {
//AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
NSManagedObjectContext *mainContext = self.managedObjectContext;
// Merge changes into the main context on the main thread
[mainContext performSelectorOnMainThread:@selector(mergeChangesFromContextDidSaveNotification:)
withObject:notification
waitUntilDone:YES];
}
Run Code Online (Sandbox Code Playgroud)