Requery Android 1.5.0版本select调用出现模糊方法调用编译错误
解决Requery 1.5.0中ReactiveEntityStore select调用的编译错误
先看你这段出问题的代码:
Observable<Result<Person>> result = mDataStore.select(Person.class) .where(Person.CATEGORY.eq(category)) .orderBy(Person.SEQUENCE.asc()) .get() .observableResult();
错误原因
问题出在你调用了get()之后再去调用observableResult()——Requery里get()方法是同步获取查询结果,返回的是Result<Person>类型,这个类型并没有observableResult()方法。而observableResult()是属于Query<T>接口的方法,应该直接在链式查询的末尾调用,不需要先调用同步的get()。
修复后的代码
把get()去掉就可以解决这个编译错误:
Observable<Result<Person>> result = mDataStore.select(Person.class) .where(Person.CATEGORY.eq(category)) .orderBy(Person.SEQUENCE.asc()) .observableResult();
补充说明
如果你的需求是获取单个Person实体的Observable,可以改用observable()方法配合Rx的操作符:
Observable<Person> singlePerson = mDataStore.select(Person.class) .where(Person.CATEGORY.eq(category)) .orderBy(Person.SEQUENCE.asc()) .observable() .first();
如果需要获取列表形式的结果,也可以用toList()操作符转换:
Observable<List<Person>> personList = mDataStore.select(Person.class) .where(Person.CATEGORY.eq(category)) .orderBy(Person.SEQUENCE.asc()) .observable() .toList();
内容的提问来源于stack exchange,提问作者Root
相关产品推荐
相关产品推荐

