我必须将 enum
枚举中的值写入数据库。编译过程中发生错误。我究竟做错了什么?
无法弄清楚如何将此字段保存到数据库中。您可以考虑为其添加类型转换器。
@ColumnInfo(name = "state_of_health")
@TypeConverters(HealthConverter::class)
var health: Health
enum class Health(val value: Int){
NONE(-1),
VERY_BAD(0),
...
}
class HealthConverter{
@TypeConverter
fun fromHealth(value: Health): Int{
return value.ordinal
}
@TypeConverter
fun toHealth(value: Int): Health{
return when(value){
-1 -> Health.NONE
0 -> Health.VERY_BAD
...
else -> Health.EXCELLENT
}
}
}
原文由 Viewed 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以对每个枚举进行转换,如下所示:
或者,如果您更喜欢将其存储为 SQL
integer
,您也可以使用序号:不幸的是,无法使用泛型
Enum<T>
来完成此操作,因为未绑定的泛型会引发错误Cannot use unbound generics in Type Converters
。Android Room 团队可以认真地为他们的 kapt 编译器添加注释和枚举生成器。
最后,注释一个数据库类、实体类、dao 类、dao 方法、dao 方法参数或实体字段类: