Ich habe eine Eins-zu-viele-Beziehung in RealmNur gültig verwaltete Objekte können von Realm kopiert werden
public class BayEntity extends RealmObject implements RealmModel {
@PrimaryKey
private int id;
private String title;
}
public class TermEntity extends RealmObject implements RealmModel {
@PrimaryKey
private String termId;
private String name;
private RealmList<BayEntity> bayList;
public void updateBayList(ArrayList<BayEntity> bayList) {
if(CollectionUtility.isEmptyOrNull(this.bayList))
this.bayList = new RealmList();
this.bayList.addAll(bayList);
realm.beginTransaction();
realm.copyToRealm(this.bayList);
realm.insertOrUpdate(this); //update current instance
realm.commitTransaction();
}
public ArrayList<BayEntity> getSimpleList() {
if(CollectionUtility.isEmptyOrNull(bayList))
return new ArrayList<>();
return (ArrayList<BayEntity>) realm.copyFromRealm(bayList);
}
}
Ich erhalte alle TermEntity
Objekte enthält baylist als:
public RealmResults<TermEntity> getTerms() {
return realm.where(TermEntity.class).findAll();
}
ich in der Lage bin zu Speichern und Abrufen von bayList
erfolgreich. Wenn ich versuche, es in Arraylist
in Verfahren zur Umwandlung getSimpleList()
, erhalte ich Ausnahme:
java.lang.IllegalArgumentException: Nur gültig verwaltete Objekte von Realm kopiert werden können.
Ich kann nicht verstehen, wie Objekte nicht verwaltet werden können, wenn sie aus dem Bereich gespeichert und abgerufen werden. Bitte korrigieren Sie mich. Vielen Dank.
Vielen Dank für Hinweise auf Fehler in meinem Code. Können Sie mir bitte sagen, wie BayList korrekt aktualisiert wird? Ich möchte Elemente zu einer bereits bestehenden Liste hinzufügen .. Danke – NightFury
Darüber hinaus Realm ist eine Instanz aus einer Singleton-Klasse, separat verwaltet. Ich habe dies hier der Einfachheit halber erwähnt. – NightFury