不同线程(主/私有队列)中的托管对象上下文是否可以处理相同的对象?

时间:2015-09-12 17:46:27

标签: ios multithreading core-data concurrency nsmanagedobjectcontext

我在主要队列中有NSManagedObjectContextAppDelegate中提供的默认上下文),我在私有中创建了另一个NSManagedObjectContext队列以请求Web服务的数据更新。我使用主上下文来获取要在整个应用程序中显示和管理的所有对象,并使用私有上下文插入我从服务中接收的新对象,以避免阻止UI并避免干扰" ;如果用户和/或应用程序正在使用它们,则使用主上下文中的对象。这两种语境都是兄弟姐妹,他们不是父母和孩子。这是因为我需要创建所有新对象以便稍后知道是否应该删除其中的一些(对象的属性指示了这一点)。

关键是,我有重复的对象集,一个在主上下文中,另一个在私有上下文中。他们应该有不同的对象ID,但根据我的应用程序的逻辑,他们是"相同"对象。如果我在主要上下文中有objectA,并且我在私有上下文中收到相同的objectA但是有更新的值,我需要在主要上下文中用objectA替换objectA在私人环境中。但他们理论上有不同的objectID。我的问题是:

  1. 我可以在主要内容中搜索objectA,将其从那里删除,然后使用objectWithID来转移"转移"从私人环境到主要的objectA?考虑到主要上下文在主队列中,而私有在私有队列中。
  2. 相反,我应该从主要上下文中删除objectA,然后保存私有上下文,然后再从主上下文中获取objectA吗?
  3. 也许我应该以另一种方式处理这个场景......
  4. 提前致谢

0 个答案:

没有答案