我目前正在开发一个小型Android应用程序,并且遇到在两个字段上使用相同的TypeConverters
的问题。
这是我的字段:
@TypeConverters(DateConverters::class)
@NonNull
@ColumnInfo(name = "create_date")
var createDate: Date
@TypeConverters(DateConverters::class)
@NonNull
@ColumnInfo(name = "update_date")
var updateDate: Date
create_date
和update_date
都是我模型类中的Date
个对象,但是它们以String
的形式存储在数据库中。为此,我创建了一个DateConverters
类:
object DateConverters {
@TypeConverter
fun toDate(value: String): Date {
val simpleDateFormat = SimpleDateFormat(PATTERN, Locale.getDefault())
return simpleDateFormat.parse(value)
}
@TypeConverter
fun toString(value: Date): String {
val simpleDateFormat = SimpleDateFormat(PATTERN, Locale.getDefault())
return simpleDateFormat.format(value)
}
}
但是当我尝试运行我的应用程序时,我必须遵循以下错误消息:
error: DateConverters() has private access in DateConverters
我还补充一点,以前我只有一个create_date
字段,并且在应用程序运行上没有问题。
你能告诉我我在做什么错吗?
提前谢谢!
答案 0 :(得分:1)
问题似乎出在使用object
而不是class
或转换器的方法名称中。
我建议您通过以下方式重写DateConverters
:
class DateConverters {
@TypeConverter
fun fromString(value: String): Date {
val simpleDateFormat = SimpleDateFormat(PATTERN, Locale.getDefault())
return simpleDateFormat.parse(value)
}
@TypeConverter
fun dateToString(value: Date): String {
val simpleDateFormat = SimpleDateFormat(PATTERN, Locale.getDefault())
return simpleDateFormat.format(value)
}
}
此外,我建议您按照samples中的说明将值存储为Long而不是String,然后在非数据级别使用SimpleDateFormat
。