Царство Котлин Миграция Android Строка - PullRequest
0 голосов
/ 25 апреля 2019

Не могу найти ответ. Я пытаюсь перенести базу данных Realm. Нужно создать таблицу DBRequest с 2 полями: Int и String

if (oldVersion == 5L) {
    val s = scheme.create("DBRequest")
    s.addField("apiCode", Int::class.java)
}

И это нормально! Но если я тоже пытаюсь добавить строковый тип

    s.addField("jsonRequest", String::class.java)

выдает ошибку:

Причина: io.realm.exceptions.RealmMigrationNeededException: миграция требуется из-за следующих ошибок: - Требуется свойство 'DBRequest.jsonRequest'.

Понятия не имею, как с этим разобраться. Я пытался что-то вроде этого:

s.addField("jsonRequest", String::class.javaPrimitiveType!!)
-or-
s.addField("jsonRequest", String::class.javaObjectType)

Ничего не помогает: (

Ответы [ 2 ]

1 голос
/ 28 апреля 2019

Другая опция для не примитивного типа String:

s.addField("jsonRequest", String::class.java, FieldAttribute.REQUIRED)

Для требуемого Int вы обычно используете int.class или Integer.class, поэтому вы используете javaPrimitiveType или javaObjectType соответственно.

1 голос
/ 25 апреля 2019

Добавить это в миграцию

s
    .addField("jsonRequest", String::class.java)
    .setRequired("jsonRequest", true)
...