我想"分离"来自RealmObject
的{{1}},意味着我希望能够从方法中返回Realm
,并且能够在RealmObject
close
之后使用它实例。
这样的事情:
Realm
目前public Person getPersonWithId(final Context context, final String personId){
Realm realm = Realm.getInstance(context);
Person person = realm.where.....;
realm.close();
return person;
}
将按预期返回错误。
拥有托管对象也意味着该对象是不可变的(无法修改),因此任何更新像getPersonWithId(mContext, personId).getName()
之类的对象的方法都会因对象是托管对象而失败。
我希望会有像person.setName(String name)
是否有人知道此问题的解决方案/解决方法?
答案 0 :(得分:28)
Android领域现在支持附加和分离领域对象。所以你可以这样做:
RealmObject objectCopy = realm.copyFromRealm(RealmObject object);
以下是文档中的详细信息:
Realm对象的实例可以是托管的也可以是非托管的。
托管对象在Realm中保留,始终是最新的 线程受限。它们通常比它更轻盈 非托管版本,因为它们在Java堆上占用的空间更少。
非托管对象就像普通的Java对象一样,但它们不是 持久化,不会自动更新。他们可以 在线程之间自由移动。
可以使用两种状态之间的转换 Realm.copyToRealm()和Realm.copyFromRealm()
答案 1 :(得分:3)