【发布时间】:2015-09-12 15:22:59
【问题描述】:
我的应用会定期向 Web 服务请求更新我使用 Core Data 持久化的对象。然后我需要更新我在主要上下文中拥有的对象(默认情况下在AppDelegate 中提供的对象)。编辑对象的不是用户,所以我需要避免阻塞 UI,此外我不只是修改对象信息,而是在需要时删除和添加新对象。
似乎有两个选项可以执行NSManagedObject 对象的更新:在私有队列中创建“兄弟”上下文,以及创建子上下文。阅读了几篇帖子,有更多人说最好使用父/子上下文(如果我错了,请纠正我),但我并不完全理解它是如何工作的。我有一些关于父/子上下文的问题:
- 子上下文可以在私有队列中,而父上下文可以在主队列中吗?
- 我在某处读过一些关于设置合并策略的内容,但我没有找到它的使用示例,也许在使用父/子上下文时不需要设置合并策略?什么时候设置?在哪里可以找到示例或教程?
- 如果我将私有上下文设置为主上下文的子上下文,并保存子私有上下文,那么私有上下文中的对象是否会按照我的意愿“替换”主上下文中的对象? (包括删除不再存在于私有上下文和新上下文中的对象)......我的意思是......整个子上下文是否替换了整个父上下文?
- 保存私有上下文而不是主上下文的子上下文,然后清除并重新获取主上下文中的所有新数据会更好吗?
在这个问题上我真的需要帮助,在此先感谢。
【问题讨论】:
标签: ios core-data concurrency merge nsmanagedobjectcontext