Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何同步两个NSManagedObjectContext_Iphone_Multithreading_Core Data_Nsoperation - Fatal编程技术网

Iphone 如何同步两个NSManagedObjectContext

Iphone 如何同步两个NSManagedObjectContext,iphone,multithreading,core-data,nsoperation,Iphone,Multithreading,Core Data,Nsoperation,我正在开发一款使用coredata的ipad应用程序。它在web上的数据库上下载信息,并将其记录在coredata中。该应用程序基于拆分视图。我的问题是在后台下载和记录数据。以下是我的做法: -我已经创建了一个NSO操作,用于下载和记录数据。 -此NSOperation使用与appDelegate上下文不同的NSManagedObjectContext,通过此函数返回,即在appDelegate中: (NSManagedObjectContext*)newContextToMainStore {


我正在开发一款使用coredata的ipad应用程序。它在web上的数据库上下载信息,并将其记录在coredata中。该应用程序基于拆分视图。我的问题是在后台下载和记录数据。
以下是我的做法:
-我已经创建了一个NSO操作,用于下载和记录数据。
-此NSOperation使用与appDelegate上下文不同的NSManagedObjectContext,通过此函数返回,即在appDelegate中:

(NSManagedObjectContext*)newContextToMainStore {
     NSPersistentStoreCoordinator *coord = nil;
     coord = [self persistentStoreCoordinator];
     NSManagedObjectContext *moc = [[NSManagedObjectContext alloc] init]; 
     [moc setPersistentStoreCoordinator:coord]; 
     return [moc autorelease];
}
-我在NSO操作中有一个观察者,当我保存上下文时,它将在appDelegate中调用此函数,以修改代理的上下文:

- (void)mergeChangesFromContextSaveNotification:(NSNotification*)notification {
     [[self managedObjectContext]mergeChangesFromContextDidSaveNotification:notification];
}
但我有一个问题,同步不起作用,因为rootViewController(即UITableViewController)上的数据(使用appDelegate的上下文初始化了NSManagedObjectContext并将NSFetchedResultsController用作数据源)不会像正常情况下那样自动实现信息。

所以我问你:
我做错了什么?使用两种不同的上下文并将它们同步是一种好方法吗?

这里的内容看起来是正确的。您确实希望确保在rootViewController中实现了
NSFetchedResultControllerDelegate
方法,以便更改将显示在UI中。

谢谢您的回答。实现了NSFetchedResultControllerDelegate。事实上,当我在appDelegate中启动系统时,它可以工作,但在稍后调用的viewController中不能工作。我在寻找我的错误,我认为这只是一个小小的错误…嗨,再次,我感到困惑,我发现了我的错误:我已经完成了两个NSOperation子类,而在第二个,我忘记了添加观察者来在两个上下文中进行修改。谢谢你的关注!