kotlin - TypeConverter 不适用于 android Room DB

标签 kotlin android-room

所以我试图将字符串对列表保存到我的数据库中,但 TypeConverter 遇到一些问题,我尝试遵循指南和其他 SO 帖子,但无法弄清楚出了什么问题......

我的实体:

@Entity
data class Credential(
    @PrimaryKey()
    val id: String,

    @ColumnInfo(name = "name")
    val name: String,

    @ColumnInfo(name = "url")
    val url: String?,

    @TypeConverters(ListPairTypeConverter::class)
    @ColumnInfo(name = "fields")
    val fields: List<Pair<String, String>>
)

我的类型转换器:

class ListPairTypeConverter {
    @TypeConverter
    fun storedStringToPairList(value: String): List<Pair<String, String>> {
        return value.split("~!!!!!~").map {
            val vals = it.split("!~~~~~!")
            Pair(vals[0], vals[1])
        }
    }

    @TypeConverter
    fun pairListToStoredString(pl: List<Pair<String, String>>): String {
        return pl.joinToString(separator = "~!!!!!~") { it.first + "!~~~~~!" + it.second }
    }
}

我的错误:

error: Cannot figure out how to save this field into database. You can consider adding a type converter for it.
    private final java.util.List<kotlin.Pair<java.lang.String, java.lang.String>> fields = null;
                                                                                  ^

最佳答案

您在错误的位置添加了类型转换器。而不是

@TypeConverters(ListPairTypeConverter::class)
@ColumnInfo(name = "fields")
val fields: List<Pair<String, String>>

您需要在此处添加

@Database(entities = [User::class], version = 1)
@TypeConverters(ListPairTypeConverter::class)
abstract class AppDatabase : RoomDatabase() {
  abstract fun userDao(): UserDao
}

关于kotlin - TypeConverter 不适用于 android Room DB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72106413/

相关文章:

android - Jetpack Compose Path 将在 Canvas 边界之外绘制

jvm - 在 Kotlin 中,如何惯用地访问可为空的嵌套映射值,或返回默认值?

Android Persistence room : "Cannot figure out how to read this field from a cursor"

android - 如何在后台线程上执行 LiveData 转换?

android - 带 RxJava2 的房间 -(可流动、可能、存储库模式)

java - 如何用起始文本绘制圆弧

android - 将分页库从 3.0.0-alpha10 更新到 3.0.0-alpha12 时出现运行时错误

gradle - 如何使用kotlin-frontend-plugin设置package.json配置

android - 无法将计数值设置为列

安卓房间数据库 : How to query alphabetically by name?