我将新表添加到我的领域数据库。对于迁移,我尝试采用这种方式:
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
应用更新时,我只会收到此错误。那么,如何解决此错误并迁移到新版本?
答案 0 :(得分:1)
尝试某种方式后,我找到了解决方案。也许有人需要这个:
我在数据库中创建了一个列表作为TodoModel类,但是我想为此创建一个迁移。而且我还需要使用#define LIST_DATA_TYPE int
而不是FieldAttribute.REQUIRED
。这是最终的迁移代码:
FieldAttribute.INDEXED