6

realm.where(Model.class) を使用すると、RealmResults が返され、リスト項目のフィールドが空になります。queryset を読み取り可能な ArrayList に変換する方法、または RealmResults を反復して DB 内のオブジェクトから実際のデータを取得する方法は?

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 に答える