我目前正在开发一个小型的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
字段,我在app运行时没有问题。
你能告诉我我做错了什么吗?
先感谢您 !
似乎问题可能是使用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 not string,然后在非数据级别使用SimpleDateFormat
。