协程流程:不确定如何将光标转换为该方法的返回类型

God*_*win 26 android kotlin android-room kotlin-coroutines

当我尝试将 Dao 更改为新的FlowApi 时,出现编译错误,指出

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();
Run Code Online (Sandbox Code Playgroud)

道是

@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>
}
Run Code Online (Sandbox Code Playgroud)

和依赖项是

    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"
Run Code Online (Sandbox Code Playgroud)

我已经尝试过两者ListArrayList,但没有运气。

提前致谢。

Mic*_*bro 69

不要在同一方法中同时使用 suspend 和 Flow<>!像这样

 @Query("SELECT * FROM user")
    suspend fun loadAll(): Flow<Array<User>>
Run Code Online (Sandbox Code Playgroud)

只是

@Query("SELECT * FROM user")
    suspend fun loadAll(): Array<User>
Run Code Online (Sandbox Code Playgroud)

或者

@Query("SELECT * FROM user")
   fun loadAll(): Flow<Array<User>>
Run Code Online (Sandbox Code Playgroud)

  • “不要在同一方法上同时使用挂起和 Flow&lt;&gt;” - 这应该是错误消息 (7认同)
  • @ScottCooper,这是不可能的,它会让我们的生活变得太轻松。 (2认同)
  • @X09 我们基本上是通过在 stackoverflow 搜索问题来获得报酬的 (2认同)

归档时间:

查看次数:

3639 次

最近记录:

4 年,11 月 前