[英]Realm.io - How to update object?
我正在使用0.81.1版本的Realm。 我有這門課:
public class KanjiComp extends RealmObject {
@PrimaryKey
private String character;
private String strokes;
private int frequency;
public String getCharacter() {
return character;
}
public void setCharacter(String character) {
this.character = character;
}
public String getStrokes() {
return strokes;
}
public void setStrokes(String strokes) {
this.strokes = strokes;
}
public int getFrequency() {
return frequency;
}
public void setFrequency(int frequency) {
this.frequency = frequency;
}
}
我第一次創建這樣的對象:
KanjiComp realmKanjiComp = realm.createObject(KanjiComp.class);
realmKanjiComp.setCharacter(cur.getString(cur.getColumnIndex("literal")));
realmKanjiComp.setStrokes(cur.getString(cur.getColumnIndex("strokes")));
realmKanjiComp.setFrequency(0);
我想增加頻率值。 為此我需要幫助我更新頻率的方法。
領域文檔說明了這一點:
使用主鍵可以使用createOrUpdate()方法,該方法將查找具有此主鍵的現有對象,如果找到,則更新它; 如果沒有找到,它將創建一個新對象。
但我找不到createOrUpdate()方法。 使用JSON的所有方法。
我的完整代碼如下所示:
try {
KanjiComp realmKanjiComp = realm.createObject(KanjiComp.class);
character = cur.getString(cur.getColumnIndex("literal"));
realmKanjiComp.setCharacter(cur.getString(cur.getColumnIndex("literal")));
realmKanjiComp.setStrokes(cur.getString(cur.getColumnIndex("strokes")));
realmKanjiComp.setFrequency(0);
} catch (Exception e) {
RealmQuery<KanjiComp> query = realm.where(KanjiComp.class);
query.equalTo("character", character);
RealmResults<KanjiComp> rKanjiComp = query.findAll();
KanjiComp oldKanjiComp = rKanjiComp.get(0);
KanjiComp realmKanjiComp = realm.update(KanjiComp.class);//update is underlined
realmKanjiComp.setCharacter(cur.getString(cur.getColumnIndex("literal")));
realmKanjiComp.setStrokes(cur.getString(cur.getColumnIndex("strokes")));
realmKanjiComp.setFrequency(oldKanjiComp.getFrequency()+1);
}
所以我的問題是,如何更新我的對象的價值? 有沒有辦法增加我的對象的價值?
我會用這樣的東西:
void createKanjiCompOrUpdateFrequency() {
// This query is fast because "character" is an indexed field
KanjiComp kanjoComp = realm.where(KanjiComp.class)
.equalTo("character", someValue)
.findFirst();
realm.beginTransaction();
if (kanjiComp == null) {
KanjiComp kanjiComp = realm.createObject(KanjiComp.class);
// set the fields here
} else {
kanjiComp.setFrequency(kanjiComp.getFrequency() + 1);
}
realm.commitTransaction();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.