我有一个真实的笔记:
public class Notes extends RealmObject {
private String title;
private String text;
private Date updatedDate;
private RealmList<Notes> editHistories = new RealmList<>();
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public Date getUpdatedDate() {
return updatedDate;
}
public void setUpdatedDate(Date updatedDate) {
this.updatedDate = updatedDate;
}
public RealmList<Notes> getEditHistories() {
return editHistories;
}
public void setEditHistories(RealmList<Notes> editHistories) {
this.editHistories = editHistories;
}
}
我想跟踪对notes对象所做的所有编辑。因此,每当有人编辑注释时,我希望在显示最新的注释时,将前一个注释存储在EditHistories中。我这样试过:
RealmResults<Notes> results = realm.where . . .;
Notes prevNote = results.get(0);
Notes newNote = realm.copyToRealm(prevNote);
newNote.getEditHistories().add(prevNote);
// set other parameters
这样:
RealmResults<Notes> results = realm.where . . .;
Notes prevNote = results.get(0);
Notes newNote = realm.createObject(Notes.class);
//set other parameters
newNote.setEditHistories(prevNote.getEditHistories());
newNote.getEditHistories().add(prevNote);
prevNote.removeFromRealm();
但是每当我更新newnote时,edithistories中的prevnote也会更新。是否有任何方法可以克隆prevnote,使其与newnote分离,并且不会受到我对后者所做的任何更改的影响?
如有任何建议,我们将不胜感激!
最佳答案
copyToRealm()
不会复制域中已有的对象。copy部分是对不在realm中的对象的复制的引用,但是我可以理解为什么它会变得稍微混乱,我们的javadoc可能应该更好地指定行为。
可以使用的一种方法是确保首先分离对象,如下所示:
RealmResults<Notes> results = realm.where . . .;
// This creates a detached copy that isn't in the Realm
Notes prevNote = realm.copyFromRealm(results.get(0));
// add() will automatically do a copyToRealm if needed
newNote.getEditHistories().add(prevNote);
关于android - 每当我更新数据时,克隆RealmObject而不影响它,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35775627/