6

当我使用 realm.where(Model.class) 它返回 RealmResults 并且列表项的字段为空。如何将查询集转换为可读的 ArrayList 或迭代 RealmResults 以从数据库中的对象获取实际数据?

4

2 回答 2

16

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;
}
于 2016-12-22T15:05:55.167 回答
2

RealmResults<E> 实现了 Iterable<E> 接口,所以你可以迭代:

for (E e : realmResults) {
    // Do stuff
}

如果这不能回答问题,请精确并添加代码示例。

于 2016-05-16T10:41:44.113 回答