【发布时间】:2013-11-25 01:27:54
【问题描述】:
对于以下情况,我对子 MOC (NSPrivateQueueConcurrencyType) 如何与父 MOC (NSMainQueueConcurrencyType) 一起工作感到困惑。我需要有一个后台线程检查 Web 服务器是否有新的或更新的数据。收到东西后,我需要保存或更新父 MOC。听起来很简单,我看到了各种各样的例子。但是,我仍然对一些事情感到困惑。
在后台线程处理数据时,我可以很方便的将对象保存在子MOC中。但是,在我的数据模型中,我按照建议设置了关系。因此,例如,ConversationThread 将包含一个消息数组。每个 Message 都会在关系中设置 Message.parentConvoThread。所以,每当我从服务器收到新消息时......
- 如何将在子 privateMOC 中创建的新 Message 对象与 ConversationThread(当前在父 mainMOC 中)关联?
现在,假设我正在获取消息撰写人的更新个人信息。我看到他们已经更新了服务器上的数据,所以我需要在 app 中更新他们的数据。在私人MOC...
- 如何从 mainMOC 获取实际对象(比如 MyContact)以显式更新?或者...
- 如果我在 privateMOC 中创建一个新的 MyContact,如何将它与 mainMOC 中当前存在的 MyContact 合并? ...或者它会以某种方式自动发生吗? (
最后,关于搜索的几个问题...
- 对子 privateMOC 的搜索能否从父 mainMOC 中返回结果(例如,如果实体存在于父中但子中不存在)?
- 如果#1 的答案为真,如果实体存在于两者中但尚未合并,会发生什么情况?
我对它们如何协同工作感到很困惑。非常感谢任何帮助。
【问题讨论】:
-
我认为我现在已经想通了。我将根据我上面的建议发言。当您将 privateMOC 设置为 mainMOC 的子对象时,它会出现,并且您对子 MOC 执行 fetch 它将从 mainMOC 返回结果,但上下文将作为子 MOC “更改”(或出现)。因此,即使实体实际上存储在 mainMOC 中,您也可以在使用它时进行关联并将其视为 privateMOC 的一部分。你们 NSManagedObjectContext 大师……这是正确的吗?
-
谁对这个问题投了反对票,请解释一下原因?
标签: ios concurrency nsmanagedobjectcontext