gpt4 book ai didi

android - 如何在 Realm 中为android中的新表迁移?

转载 作者:行者123 更新时间:2023-12-02 13:39:44 24 4
gpt4 key购买 nike

我向我的 Realm 数据库添加了一个新表。对于迁移,我尝试这样:

 realm.schema.create("AddTodoModel")
.addField("id", Long::class.java, FieldAttribute.PRIMARY_KEY)
.addField("title", String::class.java , FieldAttribute.INDEXED)
.addField("list", RealmList::class.java , FieldAttribute.INDEXED)
.addField("color", Int::class.java , FieldAttribute.INDEXED)
这是 AddTodoModel 类:
open class AddTodoModel(
@PrimaryKey
var id: Long,
var title: String,
var list: RealmList<TodoModel>,
var color: Int
) : RealmObject() {
constructor() : this(0, "", RealmList<TodoModel>(), R.color.black)
}
当启动应用程序时,我收到此错误:
java.lang.IllegalArgumentException: Use addRealmObjectField() instead to add fields that link to other RealmObjects: list
我只是在应用程序更新时收到此错误。那么,如何修复此错误并迁移到新版本?

最佳答案

尝试了一些方法后,我找到了解决方案。也许有人需要这个:
我在数据库中创建了一个列表作为 TodoModel 类,但我想为此创建一个迁移。而且我还需要使用 FieldAttribute.REQUIRED而不是 FieldAttribute.INDEXED .所以这是最终的迁移代码:

 realm.schema.create("AddTodoModel")
.addField("id", Long::class.java, FieldAttribute.PRIMARY_KEY)
.addField("title", String::class.java, FieldAttribute.REQUIRED)
.addRealmListField(
"list",
realm.schema.create("TodoModel")
.addField("isDone", Boolean::class.java, FieldAttribute.REQUIRED)
)
.addField("color", Int::class.java, FieldAttribute.REQUIRED)

关于android - 如何在 Realm 中为android中的新表迁移?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64595929/

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