objective-c – 制作未受管理的NSManagedObject的副本

所以我的问题是我有一个NSManagedObject’A’与’b’有很多关系.因此,对于’A’的每个对象,可以有许多’b’.

现在,我想复制’b’,以便’b’可以修改,但不能保存到商店,但’A’可以保存’.

例如,

self.title = A.name;
setOfB = A.setOfb; // This is still managed by CoreData
temporaryCopyOfB = [setOfB unManagedCopy];// I want to make a copy of b which isn't managed
b = [temporaryCopyOfB objectAtIndex:0];
b.property = newValue;
[A save];

//[setOfB objectAtIndex:0].property should still == oldValue

我知道这不是特别清楚,但我只想制作一个我可以编辑的托管对象的临时副本,但是即使我要调用’save’也不会保留更改.

如果您有任何问题,请告诉我,我知道我可能需要为您澄清一下.

最佳答案 我看到了几个解决方案:

>为临时目的创建另一个实体.它将与正在复制的对象具有相同的父类,但它不具有所有关系.将其插入上下文并复制值.保留这些临时对象的数组,并在适当的时候从上下文中删除它们.我以前做过这个并且它有效,但它有点复杂.
>创建一个字典对象,并将所有托管对象的键和值添加到其中.这可能更容易,但我还没试过.

请记住您是如何复制对象的.您可能希望进行更深层次的复制(创建一个新对象来保存属性),而不是指向与原始对象相同的属性对象.

点赞