dao 插入中的类型不匹配 - 如何将对象列表转换为实体
Type mismatch in dao insert - how to convert list of object to entity
在我的 Kotlin 应用程序中,我使用 Retrofit 从网络和房间检索数据以在本地存储这些数据。
在 ViewmMdel
中,我想获取 asteroid
对象并将它们存储在本地数据库中。
主要问题是网络调用 returns ArrayList
of data class called Asteroid
Dao
需要 ArrayList
个 Asteroid
实体。
所以基本上我有 2 颗小行星 classes。一个代表房间的实体,另一个代表网络调用的模型。
我在ViewModel
中有这个功能
private fun getAsteroids() {
viewModelScope.launch {
try {
var result = repository.getAsteroid()
_asteroidList.value = result.toMutableList()
appLocalDb.asteroidDao.insertFeed(result)
} catch (e : Exception) {
_asteroidList.value = null
}
}
}
此处 getAsteroids
存储库
override suspend fun getAsteroid(): ArrayList<Asteroid> {
return apiRepositoryImp.getAsteroids();
}
insertFeed
道中
@Dao
interface AsteroidDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insertFeed(vararg asteroid: Asteroid)
}
这是错误
Required:
com.asteroidradar.repository.db.entity.Asteroid
Found:
kotlin.collections.ArrayList<com.asteroidradar.Asteroid> /* = java.util.ArrayList<com.asteroidradar.Asteroid> */
您必须通过以下代码转换 com.asteroidradar.repository.db.entity.Asteroid
com.asteroidradar.Asteroid
:
var result = repository.getAsteroid()
_asteroidList.value = result.toMutableList()
appLocalDb.asteroidDao.insertFeed(*result.map{ repoAsteroid ->
com.asteroidradar.Asteroid(
//Set full properties here
)
}.toTypedArray())
在我的 Kotlin 应用程序中,我使用 Retrofit 从网络和房间检索数据以在本地存储这些数据。
在 ViewmMdel
中,我想获取 asteroid
对象并将它们存储在本地数据库中。
主要问题是网络调用 returns ArrayList
of data class called Asteroid
Dao
需要 ArrayList
个 Asteroid
实体。
所以基本上我有 2 颗小行星 classes。一个代表房间的实体,另一个代表网络调用的模型。
我在ViewModel
private fun getAsteroids() {
viewModelScope.launch {
try {
var result = repository.getAsteroid()
_asteroidList.value = result.toMutableList()
appLocalDb.asteroidDao.insertFeed(result)
} catch (e : Exception) {
_asteroidList.value = null
}
}
}
此处 getAsteroids
存储库
override suspend fun getAsteroid(): ArrayList<Asteroid> {
return apiRepositoryImp.getAsteroids();
}
insertFeed
道中
@Dao
interface AsteroidDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insertFeed(vararg asteroid: Asteroid)
}
这是错误
Required:
com.asteroidradar.repository.db.entity.Asteroid
Found:
kotlin.collections.ArrayList<com.asteroidradar.Asteroid> /* = java.util.ArrayList<com.asteroidradar.Asteroid> */
您必须通过以下代码转换 com.asteroidradar.repository.db.entity.Asteroid
com.asteroidradar.Asteroid
:
var result = repository.getAsteroid()
_asteroidList.value = result.toMutableList()
appLocalDb.asteroidDao.insertFeed(*result.map{ repoAsteroid ->
com.asteroidradar.Asteroid(
//Set full properties here
)
}.toTypedArray())