我有一个需要存储在房间数据库中的数据类:
@Entity(tableName = "day_data_table")
data class Day(var subjcts : Iterable<Subject>, var dayOfMonth : String) {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "day_date")
var Date : String = dayOfMonth
private set
@ColumnInfo(name = "date_subjects")
var Subjects : Iterable<Subject> = subjcts
private set
}
问题是我需要提前存储一个包含不定数量元素的数组,我该怎么做呢?
最简单的解决方案是将数组序列化为字符串并返回数组。如果您不打算更改此数据,例如添加或删除元素,则可以执行此操作。为此,在您方便的地方创建了一个 TypeConverter。这是一个可以进一步扩展的示例类。
只需将 Iterable 替换为 List 或其他一些实现即可。
请注意,您不需要在房间本身上调用任何东西来找到 @TypeConverter 注释。
现在,每当您收到“无法弄清楚如何将此字段保存到数据库中”时,您都可以求助于类似的解决方案。