我使用UIViewController
实例创建了NSManagedObject
,我们称之为A
。已从A
获取mainContext
。
在项目的其他部分,某些流程已使用NSPersistedContainer
更新backgroundContext
。在此更新期间,A
已更改状态。
从第一段更新UIViewController
的最佳方法是什么?如何重新A
以更新NSManagedObject
中的现有mainContext
?
答案 0 :(得分:2)
处理将一个上下文合并到另一个上下文中的更改的正确方法是:
NSManagedObjectContextDidSave
通知添加观察员。mergeChanges(fromContextDidSave notification: Notification)
更新保存操作中所做更改的上下文。您只需传递Notification
,就会发生合并,您的对象也会刷新。另一种方法是使用refresh(_ object: NSManagedObject, mergeChanges flag: Bool)
作为您的对象。传递true
以获取第二个参数以合并来自持久性存储的更改。这可能不太好,因为它只影响单个对象而不是上下文中的所有对象,但在某些情况下它很有用。
答案 1 :(得分:0)
使用NSFetchRequest获取谓词为objectID! :)
id对于现有(已保存)对象的上下文有效