Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.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/7/elixir/2.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
Objective c 具有不同进程的NSManagedObjectContext_Objective C_Cocoa_Core Data_Nsmanagedobject_Nsmanagedobjectcontext - Fatal编程技术网

Objective c 具有不同进程的NSManagedObjectContext

Objective c 具有不同进程的NSManagedObjectContext,objective-c,cocoa,core-data,nsmanagedobject,nsmanagedobjectcontext,Objective C,Cocoa,Core Data,Nsmanagedobject,Nsmanagedobjectcontext,我有两个进程正在与同一个持久存储进行通信。我将上下文保存在一个进程上,并发布一个分布式通知。另一个进程看到分布式通知,并再次获取其数据,但仍然接收旧数据。我是否需要进行某种“刷新”,以获得另一个进程,从而从存储中获取正确的数据 编辑:所以,结果证明我正确地刷新了数据。NSManagedObjects有一个“refreshObject:mergeChanges”方法,您可以使用它来完成此操作。这个问题似乎与时间有关。假设我有两个进程,A和B。进程A是主进程,并保存到数据库。然后进程B保存到数据库,

我有两个进程正在与同一个持久存储进行通信。我将上下文保存在一个进程上,并发布一个分布式通知。另一个进程看到分布式通知,并再次获取其数据,但仍然接收旧数据。我是否需要进行某种“刷新”,以获得另一个进程,从而从存储中获取正确的数据

编辑:所以,结果证明我正确地刷新了数据。NSManagedObjects有一个“refreshObject:mergeChanges”方法,您可以使用它来完成此操作。这个问题似乎与时间有关。假设我有两个进程,A和B。进程A是主进程,并保存到数据库。然后进程B保存到数据库,并向进程a发送一个通知,告知它已经保存了,进程a获取新数据。我发现,如果进程A的保存和进程B的保存靠得太近,那么即使我刷新,进程A也会提取旧数据。如果我强制在两次保存之间留出一段时间,那么结果是正确的


显然,这似乎是某种竞争条件,可能在数据实际保存到数据库之前发送通知,但是,在托管对象的didSave方法中发送通知,此时上下文已经保存。

您应该检查
合并策略
概念,以便在不同上下文之间管理、获取和传递持久存储协调器的正确值

此处->

这应该可以解决问题


希望这能有所帮助。

啊,原来这不是我想要的