我收到了编译错误 “错误:不确定如何将Cursor转换为此方法的返回类型” 在尝试查询时
Single<List<T>> getList()
但当我将Single
更改为Flowable
时,一切正常。
出现这种错误的原因是什么?
答案 0 :(得分:3)
是的,它提供了一个错误,因为您正在观察数据库更改。
单次发出并且仅需要 1 结果。由于它是LiveData的包装器,一旦数据发生更改就会通知它,它需要使用Flowable。即使当前没有可用数据,这也允许在Stream中获取数据。
另外请注意,不在生成的类中使用泛型。这可能会导致不必要的行为。
如果你真的想把数据包装成一个你可以在你的Dao中使用
@Query("SELECT * FROM ActiveShooter") List<ActiveShooter> getAllActiveShooters();
并将您的结果转换为存储库中的Single。
public void Single<List<ActiveShooter>> getActiveShooterInRepo() {
return Single.fromCallable( () -> yourDao.getAllActiveShooters());
}
如果你这样做,你将失去数据变化的可观察性。