【发布时间】:2011-03-01 05:28:54
【问题描述】:
我有一个我认为是相当标准的设置,有一个从不保存的暂存器 MOC(包含从网上下载的一堆对象)和另一个永久的 MOC,它保留对象。当用户从 scratchMOC 中选择一个对象添加到她的库中时,我想要 1)从 scratchMOC 中删除该对象并插入到 PermanentMOC 中,或者 2)将该对象复制到 PermanentMOC 中。 Core Data FAQ 说我可以像这样复制一个对象:
NSManagedObjectID *objectID = [managedObject objectID];
NSManagedObject *copy = [context2 objectWithID:objectID];
(在这种情况下,context2 将是永久MOC。)但是,当我这样做时,复制的对象出错了;数据最初是未解决的。当它确实得到解决后,所有的值都为零;原始 managedObject 中的任何数据(属性或关系)都不会被实际复制或引用。因此,我看不出使用这个 objectWithID: 方法和使用 insertNewObjectForEntityForName: 将一个全新的对象插入到 PermanentMOC 之间有什么区别。
我意识到我可以在 PermanentMOC 中创建一个新对象并手动从旧对象复制每个键值对,但我对这个解决方案不太满意。 (我有许多不同的托管对象都有这个问题,所以我不想在继续开发时编写和更新所有这些对象的方法。)有更好的方法吗?
【问题讨论】:
标签: cocoa cocoa-touch core-data nsmanagedobject nsmanagedobjectcontext