核心数据:有没有办法将NSManagedObect移动/复制到另一个上下文?

时间:2011-12-11 10:31:28

标签: core-data nsmanagedobjectcontext

我在Context A中有一个NSManagedObject,并希望在Context B中有它。如果我使用objectID在Context B中加载它,上下文A中的所有数据都会丢失,所以我想复制/移动数据,如

[managedObjectInContextA copyTo:contextB];

我怎样才能做到这一点?

非常感谢,

的Stefan

2 个答案:

答案 0 :(得分:1)

三个步骤:

  • 在早期,注册适合NSManagedObjectContextDidSaveNotification的地方。 (拥有上下文B的视图控制器可能是一个不错的选择;它取决于您的应用程序架构。)

  • 更改上下文A的对象副本,并保存上下文A.这会导致触发上述通知。

  • 在收到此通知的方法中,请在上下文B中调用mergeChangesFromContextDidSaveNotification:。这会导致上下文B与新保存的更改保持同步。

上下文B的对象副本现在具有新状态。

如果对象的两个副本可能都有未保存的更改,则事情会变得更复杂。如果需要,请参阅NSManagedObjectContext的mergePolicy以查看处理方法。

答案 1 :(得分:0)

最明显的解决方案是在切换上下文之前将数据保存到持久存储中。

[managedObjectContextA save:&error];