gpt4 book ai didi

Android Room - 插入密封类列表..或任何东西

转载 作者:行者123 更新时间:2023-12-02 11:20:33 25 4
gpt4 key购买 nike

我有一个如下项目列表,我想使用房间输入数据库。

 data class MyRotasDayItem(
@PrimaryKey
@SerializedName("id")
val id: Long,
@SerializedName("date")
val date: String,
@Embedded
@SerializedName("dayEvents")
val dayEvents: List<SealedObj>
)

但是我似乎无法添加 dayEvents。即使我制作了我得到的类型列表......
实体和 POJO 必须有一个可用的公共(public)构造函数
我必须使用类型转换器吗?

如果列表中的 Type 是一个包含其他数据对象的 Sealed 类,例如...
sealed class MySealedExample(
open val foo: Long,
open val bar: Long
) {

@PrimaryKey(autoGenerate = true)
var id: Int = 0


@Entity
data class AnExample1(
@Ignore override val foo: Long,
@Ignore override val bar: Long,
val something:String
) : MySealedExample(foo, bar)

@Entity
data class AnExample2(
@Ignore override val foo: Long,
@Ignore override val bar: Long,
val somethingElse:List<SomeObj>
) : MySealedExample(foo, bar)
}

无论如何将其插入数据库?

谢谢

最佳答案

使用类型转换器,我遇到了类似的问题并使用类型转换器修复了它。
为了将密封类转换为字符串,反之亦然,我使用了 gist 中的 Gson 扩展。 .

@JvmStatic
@TypeConverter
fun sealedClassToString(sealedClass: SealedClass) : String = GsonExtension.toJson(sealedClass)

@JvmStatic
@TypeConverter
fun sealedClassFromString(sealedClass: String) : SealedClass = sealedClass.let { GsonExtension.fromJson(it) }

关于Android Room - 插入密封类列表..或任何东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59330118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com