簡體   English   中英

如何在領域中為android中的新表遷移?

[英]How to migration in realm for new table in android?

我向我的領域數據庫添加了一個新表。 對於遷移,我嘗試這樣:

 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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM