android - 协程流程:不确定如何将游标转换为此方法的返回类型
问题描述
当我尝试将 Dao 更改为新的Flow
Api 时,我收到编译错误,指出
Not sure how to convert a Cursor to this method's return type
public abstract kotlinx.coroutines.flow.Flow<java.util.List<com.ezek.ezign.model.ECampaign>> readCampaigns();
道是
@Dao
interface CampaignDao {
@Query("SELECT * FROM campaign ORDER BY timeStamp ASC")
fun readCampaigns(): Flow<List<ECampaign>>
@Query("SELECT * FROM campaign WHERE id = :campaignId")
fun readCampaign(campaignId: Int): Flow<ECampaign>
}
并且依赖项是
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.2'
implementation "android.arch.persistence.room:runtime:$rootProject.ext.room_version"
kapt "android.arch.persistence.room:compiler:$rootProject.ext.room_version"
//room_version = "2.1.0"
我已经尝试过 BothList
和ArrayList
,但没有运气。
提前致谢。
解决方案
不要在同一个方法上同时使用 suspend 和 Flow<> !像这样
@Query("SELECT * FROM user")
suspend fun loadAll(): Flow<Array<User>>
只是
@Query("SELECT * FROM user")
suspend fun loadAll(): Array<User>
或者
@Query("SELECT * FROM user")
fun loadAll(): Flow<Array<User>>
推荐阅读
- javascript - 图标未右对齐
- powershell - 用于循环多个 O365 租户的 Powershell 脚本
- python - 有没有办法在 matplotlib 中的 3d 图的 x 和 y 轴上绘制 2d 直方图?
- tensorflow - 使用 NCCL all_sum 测试在 NVLINK 上看不到任何传输
- r - 将相同的标签分配给具有相同后缀的多个变量 - R
- angular - 延迟加载路由和异步管道时使用推送策略的 ExpressionChangedAfterItHasBeenCheckedError
- android - 是否可以在 android 设备上运行容器?
- php - 改变数组中键值的模式
- java - 从 JSON 对象 Android 返回与其 ID 对应的名称
- c# - SQL Server 包含的谓词不适用于多个搜索词