sqlite - 房间的日历类型转换器(Kotlin)

标签 sqlite kotlin android-room android-architecture-components typeconverter

我正在尝试使用以下 TypeConverter 在我的房间数据库中保留一个时间戳:

class Converters {

    @TypeConverter
    fun fromTimestamp(value: Long?): Calendar? {

        if(value == null) return null

        val cal = GregorianCalendar()
        cal.timeInMillis = value
        return cal
    }

    @TypeConverter
    fun toTimestamp(timestamp: Calendar?): Long? {

        if(timestamp == null) return null

        return timestamp.timeInMillis
    }
}

我的两个实体包括以下列 :

@ColumnInfo(name = "timestamp")
val timestamp: Calendar?,

但在尝试构建项目时出现编译错误 - 使用开发人员引用指南中的 Date TypeConverter 示例时没有问题。

我无法看到实际的错误是什么,因为如果与 Room 相关的代码有问题,我只会收到一堆数据绑定(bind)“找不到符号”错误。

最佳答案

用途:

object Converters {
    @TypeConverter
    @JvmStatic
    fun fromTimestamp(value: Long?): Calendar? = value?.let { value ->
        GregorianCalendar().also { calendar ->
            calendar.timeInMillis = value
        }
    }

    @TypeConverter
    @JvmStatic
    fun toTimestamp(timestamp: Calendar?): Long? = timestamp?.timeInMillis
}

@TypeConverters(Converters::class)
abstract class AppDatabase : RoomDatabase() {

关于sqlite - 房间的日历类型转换器(Kotlin),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54748483/

相关文章:

sqlite附近的语法错误

Scheme 中的数据库位置

kotlin - 为什么 Kotlin 协程在同一个线程中顺序运行?

java - 使用@TypeConverter的ConcurrentModificationException

android - 如何撤消使用 Room 持久库所做的删除?

java - NullPointerException Logcat 错误 Android

python - python sqlite3中的递归(级联)选择

java - 如何将应用程序更新标记为立即或灵活(应用程序内更新 API)

generics - 如何在Kotlin中将类型传递给泛型方法?

android - 通过 DAO 方法返回 Map 对象