0

我的应用程序允许用户编辑数据,但在保存期间可能会发生两件事:

  1. 如果数据名称保持不变,只需将对象保存为编辑版本即可。即他们只是在编辑现有的对象。

  2. 但是,如果他们更改了名称,这应该会创建一个新实例并将已编辑的数据恢复为原始数据。

显然,1 是简单的情况,并且工作得很好。但是我对处理 2 的最佳方法感到矛盾。将修改后的 NSManagedObject 保存为数据库中的新行有多好?

4

1 回答 1

1

没有明显的方法可以“复制” a NSManagedObject。最强大的方法是从头开始简单地重新创建所有内容。

确保您将所有更改的属性单独存储(这里我假设它们位于不同的文本字段中,或者它们与现有对象没有变化)。当您的编辑视图控制器被解除时,您可以做出此决定(是否新实例):

if (![nameTextField.text isEqualToString:object.name]) {
   ObjectClass *newObject = [NSEntityDescription 
       insertNewObjectForEntityForName:@"ObjectClass" 
                inManagedObjectContext:self.managedObjectContext];
   newObject.name = nameTextField.text;
   newObject.attribute1 = oldObject.attribute1;
   // or
   newObject.attribute1 = attribute1TextField.text;
   // do this for all attributes
   [self.managedObjectContext save:nil]; 
}
于 2012-10-24T07:12:52.750 回答