我的应用程序允许用户编辑数据,但在保存期间有两件事情可能发生:
如果数据名称保持不变,只需将对象保存为已编辑的版本即可。即他们只是在编辑现有的对象。
但是,如果他们更改了名称,则应创建新实例并将编辑后的数据恢复为原始数据。
显然,1是容易的情况,工作得很好。但我对最佳处理方法存在冲突2.如何将修改后的NSManagedObject保存为数据库中的新行?
答案 0 :(得分:1)
没有明显的方法来“复制”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];
}