Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 制作一份NSManagedObject的副本,该副本不是';管理不善_Objective C_Cocoa_Core Data - Fatal编程技术网

Objective c 制作一份NSManagedObject的副本,该副本不是';管理不善

Objective c 制作一份NSManagedObject的副本,该副本不是';管理不善,objective-c,cocoa,core-data,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

所以我的问题是我有一个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
我知道这还不是很清楚,但我只想创建一个托管对象的临时副本,可以对其进行编辑,但不保留更改,即使我要调用“保存”


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

我看到了两种解决方案:

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

  • 创建一个dictionary对象,并向其中添加所有托管对象键和值。这可能更容易,但我还没有尝试过

  • 请记住您是如何复制对象的。您可能希望创建更深的副本(创建新对象以保存属性),而不是指向与原始对象相同的属性对象