如果数据存在则更新

时间:2015-01-25 07:18:36

标签: uitableview core-data

如果数据已存在于数据库中,当我们点击按钮保存时,如何更新数据? 谢谢你的帮助。

- (IBAction)save:(id)sender {

NSManagedObjectContext *context = [self.recipe managedObjectContext];

if (!self.material) {
    self.material = [NSEntityDescription insertNewObjectForEntityForName:@"Material" inManagedObjectContext:context];
    [self.recipe addMaterialsObject:self.material];
    self.material.displayOrder = [NSNumber numberWithInteger:self.recipe.materials.count]; 
    }    
[self.parentViewController dismissViewControllerAnimated:YES completion:nil]; 
}

1 个答案:

答案 0 :(得分:1)

这取决于您如何将Material实体的实例定义为相等。例如,100克面粉和200克面粉相同(它们应该是,你应该找到一种方法将数量与成分分开......)。

您可以实现方法isEqualToMaterial:(Material*)otherMaterial并比较基本属性,例如名称和类别。在插入新的实体对象之前,您可以改为使用现有的实体对象。

但是,从您的代码中我看到您在材质对象中存储displayOrder,这取决于配方中的材料数量。这可能会覆盖任何现有的displayOrder - 因此您目前使用多种大致相同的材料设置,虽然不理想,但可能就是您想要的。

也许您应该重新考虑您的数据模型设置,并设计一种方式,用户可以在开始输入自己的成分列表之前从成分列表中选择