我希望你能够使用Realm和RxJava实现仓储模式(Repository Pattern)。仓储接口的签名如下:
Observable<List<T>> query(Specification specification);
因此,当我使用Realm并想要检索结果“asObservable”时,我会得到Observable>。我找不到一种将Observable>转换为Observable>的方法。
有人能帮忙解决这个问题吗?
我尝试过类似于这样的东西
final Observable<RealmResults<PlantRealm>> realmResults = realm.where(PlantRealm.class)
.equalTo(PlantTable.ID, "1")
.findAll().asObservable();
// convert Observable<RealmResults<PlantRealm>> into Observable<List<PlantRealm>>
return realmResults.flatMap(Observable::from).toList().map(list -> {
for (PlantRealm plantRealm : list) {
plants.add(toPlant.map(plantRealm));
}
return Observable.from(plants);
}
);
但是类型检查系统仍在抱怨...
return Observable.create( subscriber -> {
final Realm realm = Realm.getInstance(realmConfiguration);
final RealmResults<PlantRealm> realmResults = realm.where(PlantRealm.class)
.equalTo(PlantTable.ID, "1")
.findAll();
final List<Plant> plants = new ArrayList<>();
for (PlantRealm plantRealm : realmResults) {
plants.add(toPlant.map(plantRealm));
}
realm.close();
subscriber.onNext(plants);
subscriber.onCompleted();
});
new ArrayList<Plant>(Arrays.asList(realmResults.toArray()))
吗? - Ignacio Giagante