当我使用realm.where(Model.class)时,它返回RealmResults并且列表项的字段为空。如何将查询集转换为可读的ArrayList或迭代RealmResults以从数据库中的对象获取实际数据?
Realm 中的所有提取都是惰性的,并且数据永远不会被复制。所以如果你想从RealmResults获取当前数据,你必须调用realm.copyFromRealm(results)。
public List<Model> getModelList() {
List<Model> list = new ArrayList<>();
Realm realm;
try {
realm = Realm.getDefaultInstance();
RealmResults<Model> results = realm
.where(Model.class)
.findAll();
list.addAll(realm.copyFromRealm(results));
} finally {
if (realm != null) {
realm.close();
}
}
return list;
}
RealmResults
for (E e : realmResults) {
// Do stuff
}
如果这不能回答问题,请精确说明并添加代码示例。
我的应用程序中使用的 kotlin 版本:
/**
* convert RealmResults<Model> to ArrayList<Model>
*
* @param realm realm
* @param results RealmResults<Model> to convert
* @return resultsList List<Model> converted
*/
fun getResultsList(
realm: Realm,
results: RealmResults<Model>?
): MutableList<Model> {
val resultsList: MutableList<Model> = ArrayList()
resultsList.addAll(realm.copyFromRealm(results!!))
return resultsList
}
Realm realm = Realm.getDefaultInstance();
realm.where(Object.class)
.findAllAsync()
.addChangeListener(list -> {
List<Object> listObjects = realm.copyFromRealm(list);
});