我的应用程序会定期为我坚持使用的对象请求更新 Core Data
到网络服务。然后我需要更新我在主要上下文中拥有的对象(默认情况下 AppDelegate
中提供的对象)。编辑对象的不是用户,所以我需要避免阻塞 UI,此外 我不只是修改对象信息,而是在需要时删除和添加新对象 .
似乎有两个选项可以执行 NSManagedObject
的更新。对象:在私有(private)队列中创建一个“兄弟”上下文,并创建一个子上下文。阅读了几篇帖子,有更多人说最好使用父/子上下文(如果我错了,请纠正我),但我并不完全理解它是如何工作的。我对父/子上下文有一些疑问:
我真的需要这个问题的帮助,在此先感谢。
最佳答案
You use a merge policy object to resolve conflicts between the persistent store and in-memory versions of managed objects.
因此,当您有多个直接来自persistentStoreCoordinator 的上下文时,您最常使用它,可能是一种私有(private)队列类型和一种主队列类型。
合并策略影响调用结果
- (void)mergeChangesFromContextDidSaveNotification:(NSNotification *)notification
因此,如果您的删除操作是在专用队列中完成然后保存的,您可以通过调用
mergeChanges...
在 UI 中反射(reflect)该更改。在您的 Main 上下文中,使用通知对象NSManagedObjectContextDidSaveNotification
Private 上下文中的保存将创建。使用
mergeChangesFromContextDidSaveNotification:
has been measured比 parent->child 更快地进行更改传播,但您可能会发现 parent->child 在可读性方面更清晰。
关于ios - 父/子托管对象上下文究竟是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32540461/