当我使用realm.where(Model.class)时,它返回RealmResults,列表项的字段为空。如何将查询集转换为可读的ArrayList或迭代RealmResults以从DB中的对象获取实际数据?
答案 0 :(得分:8)
所有提取在Realm中都是惰性的,并且永远不会复制数据。因此,如果您想从RealmResults获取当前数据,则必须调用realm.copyFromRealm(结果)。
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;
}
答案 1 :(得分:2)
RealmResults&LT E - 代替;实现Iterable&lt; E&gt;接口,所以你可以用:
进行迭代for (E e : realmResults) {
// Do stuff
}
如果这不能回答问题,请详细说明并添加代码示例。