realm.createObject()
還返回一個RealmProxy實例,並在直接操作,並因此創建N
對象來存儲N
對象,但是可以使用以下方式僅使用1
對象的實例來存儲N
對象:
RealmUtils.executeInTransaction(realm -> {
Cat defaultCat = new Cat(); // unmanaged realm object
for(CatBO catBO : catsBO.getCats()) {
defaultCat.setId(catBO.getId());
defaultCat.setSourceUrl(catBO.getSourceUrl());
defaultCat.setUrl(catBO.getUrl());
realm.insertOrUpdate(defaultCat);
}
});
但要真正回答你的問題,copyToRealmOrUpdate()
是有意義的,如果你想堅持元素,將它們放在RealmList<T>
中,並在另一個RealmObject中設置新管理對象的RealmList。如果您的RealmObject類和下載的分析對象匹配,則會發生這種情況。
@JsonObject
public class Cat extends RealmObject {
@PrimaryKey
@JsonField(name="id")
String id;
@JsonField(name="source_url")
String sourceUrl;
@JsonField(name="url")
String url;
// getters, setters;
}
final List<Cat> cats = //get from LoganSquare;
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
Person person = realm.where(Person.class).equalTo("id", id).findFirst();
RealmList<Cat> realmCats = new RealmList<>();
for(Cat cat : realm.copyToRealmOrUpdate(cats)) {
realmCats.add(cat);
}
person.setCats(realmCats);
}
});
所以基本上當我通過網絡接收一個對象,然後我想將它存儲在Realm中? – jhegedus
是的。你會收到JSON,Gson lib將它轉換成POJO對象,並且你將它存儲在Realm中。 – Divers
謝謝,這確實有道理。 – jhegedus