【发布时间】:2011-02-13 10:07:31
【问题描述】:
我有一个托管对象(“A”),它包含各种属性和关系类型,它的关系也有自己的属性和关系。我想做的是“复制”或“复制”以对象“A”为根的整个对象图,从而创建一个与“A”非常相似的新对象“B”。
更具体地说,“B”(或其子项)包含的任何关系都不应该指向与“A”相关的对象。应该有一个全新的对象图,具有完整的相似关系,并且所有对象都具有相同的属性,但当然是不同的 id。
有一种明显的手动方法可以做到这一点,但我希望了解一种更简单的方法,这在 Core Data 文档中并不完全明显。
TIA!
【问题讨论】:
-
这太棒了,一切都很好,但现在这里有 13 个相同算法的不同分支,每个分支都有自己有趣的功能和修复! … 所以。也许应该为每个问题提供一个 git repo 来解决这个问题:-)
-
我认为没有“明显的手动”方法可以做到这一点,因为 NSManagedObject 是任意复杂关系图的一部分。您将需要一次又一次地处理循环关系、反向关系和“会议”相同的实体。这个问题映射到“复制子图”的问题。我对许多复杂的 CoreData 模型的经验是,您通常需要一个“浅”克隆器,它将克隆实体及其属性 - 并克隆它的关系。不是相关实体。含义 - 原版将与克隆版相同的实体相关。
标签: cocoa core-data nsmanagedobject