我必须将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
}
}
}
Database
类上使用@TypeConverters
注解(而不是在枚举类上)。请参考 https://developer.android.com/training/data-storage/room/referencing-data。 - Demigod