我使用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对于现有(已保存)对象的上下文有效