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 に答える