0

我面临更新现有记录(DBAccess ORM)的问题。我想通过带有特定字段的“ ID ”更新特定记录。

请查看以下快速代码。

func updatePostDataById(Post_id: NSNumber, updatedName:String, updatedCity:String){

    let objPost = Post();

    objPost.Id = Post_id;
    objPost.name = updatedName;
    objPost.city = updatedCity;

    objPost.commit();
}

当我尝试以这种方式更新记录时。然后它在“ post ”表中生成新记录。

请提出完美的解决方案来解决此问题。

4

1 回答 1

0

OP 示例将始终创建一个新对象,因为它们正在使用以下方法创建一个全新的对象:

let objPost = Post();

要更新记录,您需要保留原始对象,为此您可以查询它,或使用以下快捷方式之一:

let objPost = Post.query().whereWithFormat("Id = %@", withParameters: [Post_id]).limit(1).fetch().firstObject;

或更短的版本是:

let objPost = Post.objectWithPrimaryKeyValue(Post_id)

它本质上在引擎盖下执行相同的查询。

这两种方法都将返回一个现有对象,只要将其提交到数据库中,就会替换现有对象。

谢谢阿德里安

于 2016-05-13T08:01:29.863 回答