【发布时间】:2019-12-11 02:23:52
【问题描述】:
我必须将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
}
}
}
【问题讨论】:
-
看起来你应该用
@TypeConverters注释(而不是你的enum class)来注释你的Database类。检查developer.android.com/training/data-storage/room/… -
@Demigod 是的,这是可行的。你可以写答案
标签: android kotlin enums android-room converters