如何重新获取NSManagedContext中存在的对象
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何重新获取NSManagedContext中存在的对象相关的知识,希望对你有一定的参考价值。
我使用UIViewController
实例创建了NSManagedObject
,我们称之为A
。 A
从mainContext
获取。
在项目的其他部分,某些过程使用NSPersistedContainer
更新了backgroundContext
。在此更新期间,A
改变了状态。
从第一段更新UIViewController
的最佳方法是什么?如何重新加载A
来更新NSManagedObject
中现有的mainContext
?
处理在一个上下文中进行的合并更改到另一个上下文的正确方法是:
- 添加
NSManagedObjectContextDidSave
通知的观察者。 - 发布此通知时,使用
mergeChanges(fromContextDidSave notification: Notification)
从保存操作中所做的更改更新您的上下文。您可以直接传递Notification
,然后合并将会发生,您的对象将被刷新。
另一种方法是使用refresh(_ object: NSManagedObject, mergeChanges flag: Bool)
作为您的对象。通过true
获取第二个参数,以合并来自持久性存储的更改。这可能不太好,因为它只影响单个对象而不是上下文中的所有对象,但在某些情况下它很有用。
使用NSFetchRequest获取谓词作为objectID! :)
id对于现有(已保存)对象的上下文有效
以上是关于如何重新获取NSManagedContext中存在的对象的主要内容,如果未能解决你的问题,请参考以下文章
使用最新版本的 Magical Record 保存 NSManagedContext 的正确方法
在 IOS 9 及更低版本中创建 nsmanagedcontext
在Ansible中,如果系统在更新该行之前重新启动,如何重复获取文件直到存在一行?
可以将 NSmanagedObject 移动到另一个 NSManagedContext 吗?
将 NSManagedObject 与另一个 NSManagedContext(多线程)中的“相同”NSManagedObject 合并