如何同步两个NSManagedObjectContext


我正在研究使用coredata的ipad应用程序。 它下载有关网上数据库的信息,并将它们记录在coredata中。 该应用程序基于分割视图。 我的问题是在后台下载和记录数据。
以下是我所做的:
- 我创建了一个NSOperation,用于下载和记录数据。
- 这个NSOperation使用与appDelegate的上下文不同的NSManagedObjectContext,通过这个函数返回,即在appDelegate中:

(NSManagedObjectContext*)newContextToMainStore {
     NSPersistentStoreCoordinator *coord = nil;
     coord = [self persistentStoreCoordinator];
     NSManagedObjectContext *moc = [[NSManagedObjectContext alloc] init]; 
     [moc setPersistentStoreCoordinator:coord]; 
     return [moc autorelease];
}

- 我在NSOperation中有一个观察者,当我保存上下文时,将在appDelegate中调用此函数,以便修改委托的上下文:

- (void)mergeChangesFromContextSaveNotification:(NSNotification*)notification {
     [[self managedObjectContext]mergeChangesFromContextDidSaveNotification:notification];
}

但我有一个问题,同步不起作用,因为rootViewController(这是一个UITableViewController),有一个NSManagedObjectContext与appDelegate的上下文初始化,并使用NSFetchedResultsController作为数据源的数据不会自动实现这些信息,正常情况下必须这样做。
所以我问你:
我做错了什么 ? 使用两个不同的上下文并同步它们的好方法是吗?


你在这里看起来是正确的。 你要确保你实施NSFetchedResultControllerDelegate在RootViewController的方法,从而改变将出现在用户界面。

链接地址: http://www.djcxy.com/p/91649.html

上一篇: How to synchronise two NSManagedObjectContext

下一篇: Import AppDelegate into models?