代码android 无法识别,Android Room错误:无法识别枚举列表的TypeConverter

Room库无法识别我为枚举列表创建的TypeConverter.但是,当我将其更改为枚举的ArrayList时,它工作正常.任何人都知道为什么以及我该怎么做才能使这个工作与List? (在Kotlin中使用List更容易,我真的不想因为这个原因而转换回ArrayList).

这是我的代码:

我的模特:

@Entity

data class Example(@PrimaryKey val id: String?,val name: String,var days: List?)

DayOfWeek是一个枚举:

enum class DayOfWeek {

MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY;

val value: Int

get() = ordinal + 1

companion object {

private val ENUMS = DayOfWeek.values()

fun of(dayOfWeek: Int): DayOfWeek {

if (dayOfWeek < 1 || dayOfWeek > 7) {

throw RuntimeException("Invalid value for DayOfWeek: " + dayOfWeek)

}

return ENUMS[dayOfWeek - 1]

}

}

}

我的TypeConverter:

private const val SEPARATOR = ","

class DayOfWeekConverter {

@TypeConverter

fun daysOfWeekToString(daysOfWeek: List?): String? {

return daysOfWeek?.map { it.value }?.joinToString(separator = SEPARATOR)

}

@TypeConverter

fun stringToDaysOfWeek(daysOfWeek: String?): List? {

return daysOfWeek?.split(SEPARATOR)?.map { DayOfWeek.of(it.toInt()) }

}

}

我将它设置在我的DB类中,如下所示:

@Database(entities = arrayOf(Example::class),version = 1)

@TypeConverters(DayOfWeekConverter::class)

abstract class AppDatabase : RoomDatabase() {

abstract fun exampleDao(): ExampleDao

}

我的DAO看起来像这样:

@Dao

interface ExampleDao {

@Query("SELECT * FROM example")

fun getAll(): LiveData>

@Insert(onConflict = REPLACE)

fun save(examples: List)

}

我用这段代码得到的错误是:

error: Cannot figure out how to save this field into database. You can consider adding a type converter for it.

e:

e: private java.util.List extends com.example.DayOfWeek> days;

就像我上面说的,如果我将days属性更改为ArrayList< DayOfWeek> (并在DayOfWeekConverter中对ArrayList进行更改)然后一切正常.如果有人能帮我解决这个问题并告诉我如何在这里使用List它会有很大的帮助,它让我发疯:/.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值