在 Realm 中更新语句

Update statement in Realm

我有 VisitingCardPOJO 表格 table。我想更新单个条目说 no=3

VisitingCardPOJO.java

public class VisitingCardPOJO extends RealmObject {

   @PrimaryKey private int no;
    private String name;
    private String address;

    public int getNo() {
        return no;
    }

    public void setNo(int no) {
        this.no = no;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}

我找到了解决方案并且有效

 public void updateNewCard(Realm realm, VisitingCardPOJO card) {
        realm.beginTransaction();
        VisitingCardPOJO toEdit = realm.where(VisitingCardPOJO.class)
                .equalTo("no", card.getNo()).findFirst();
        toEdit.setName(card.getName());
        toEdit.setAddress(card.getAddress());
        realm.commitTransaction();
    }

demo for Realm

真正正确的做法是这样

public void updateNewCard(Realm realm, VisitingCardPOJO card) {
    final int no = card.getNo();
    realm.executeTransaction(new Realm.Transaction() {
        @Override
        public void execute(Realm realm) {
            VisitingCardPOJO toEdit = realm.where(VisitingCardPOJO.class)
                .equalTo("no", no).findFirst();
            if(toEdit != null) {
                toEdit.setName(card.getName());
                toEdit.setAddress(card.getAddress());
            }
        }
    });
}