我正在研究使用coredata的ipad应用程序。它下载有关Web上数据库的信息,并将其记录在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的上下文,并用作NSAetchedResultsController的数据源,不能自动实现信息,正如它必须做的那样
所以我问你:
我做错了什么?这是使用两个不同的上下文并同步它们的好方法吗?
答案 0 :(得分:1)
你在这里看到的是正确的。您确实希望确保在rootViewController中实现NSFetchedResultControllerDelegate
方法,以便更改将显示在UI中。