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

标签 objective-c cocoa core-data

所以我的问题是我有一个 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

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

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

最佳答案

我看到了几个解决方案:

  1. 创建另一个实体作为临时实体。它与正在复制的对象具有相同的父类,但不会具有所有关系。将其插入上下文并复制值。保留这些临时对象的数组,并在适当的时候从上下文中删除它们。我以前做过这个并且很有效,但是有点复杂。

  2. 创建一个字典对象并将所有托管对象的键和值添加到其中。这可能更容易,但我还没有尝试过。

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

关于objective-c - 制作不受管理的 NSManagedObject 的副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2169655/

相关文章:

objective-c - 如何使用 Cocotron 在 Xcode 中设置 Windows 版本?

ios - 使用 Core Data 存储大量对象

cocoa - CoreData - 如何创建 NSManagedObject 子类的子类(世代间隙模式)

iphone - iOS 5.0 模态视图不旋转( Storyboard)

objective-c - 为什么我的核心数据模型不再起作用? Integer16 值翻转?

objective-c - 什么时候应该将 CoreData 中的 transient 属性包含在对象模型中?

swift - 在后台线程中将数据同步到服务器 : multiple-contexts in core data

iphone - iOS Retina 显示屏的奇怪调整大小和分辨率

iphone - UIView 意外进入状态栏下方

ios - UIView autoresizingMask 用于固定左右边距和灵活宽度