我在Context A中有一个NSManagedObject,并希望在Context B中有它。如果我使用objectID在Context B中加载它,上下文A中的所有数据都会丢失,所以我想复制/移动数据,如
[managedObjectInContextA copyTo:contextB];
我怎样才能做到这一点?
非常感谢,
的Stefan
答案 0 :(得分:1)
三个步骤:
在早期,注册适合NSManagedObjectContextDidSaveNotification
的地方。 (拥有上下文B的视图控制器可能是一个不错的选择;它取决于您的应用程序架构。)
更改上下文A的对象副本,并保存上下文A.这会导致触发上述通知。
在收到此通知的方法中,请在上下文B中调用mergeChangesFromContextDidSaveNotification:
。这会导致上下文B与新保存的更改保持同步。
上下文B的对象副本现在具有新状态。
如果对象的两个副本可能都有未保存的更改,则事情会变得更复杂。如果需要,请参阅NSManagedObjectContext的mergePolicy
以查看处理方法。
答案 1 :(得分:0)
最明显的解决方案是在切换上下文之前将数据保存到持久存储中。
[managedObjectContextA save:&error];