如何将`.findAllAsync()。asObservable()`与`copyFromRealm`结合起来?

时间:2016-05-19 14:25:44

标签: realm rx-java

我正在使用带有copyFromRealm的realm-java来创建数据的分离副本,因为我不需要具有附加对象的复杂性。

我正在尝试与RxJava结合使用,因此使用findAllAsync().asObservable()可以生成类型为RealmResults的Observable。但是,这仍然处理附加的对象。

我如何转换它:

public Observable<RealmResults<MyClass>> find(String id) {
    return realm.where(MyClass.class)
            .equalTo("id", id)
            .findAllAsync()
            .asObservable()
            .filter(RealmResults::isLoaded);
}

还可以使用Realm的realm.copyFromRealm(attachedRealmObject);方法,以便从Realm自动复制每个结果,而无需遍历RealmResults列表并手动分离。

1 个答案:

答案 0 :(得分:4)

copyFromRealm也适用于集合,所以下面应该有用吗?

public Observable<RealmResults<MyClass>> find(String id) {
        return realm.where(MyClass.class)
                .equalTo("id", id)
                .findAllAsync()
                .asObservable()
                .filter(RealmResults::isLoaded)
                .map(results -> realm.copyFromRealm(results))
    }