Как указать поле в коробке может быть равно NULL в моем коде миграции Realm?

Я использую Kotlin, и я хочу добавить новое поле в объект RealmObject и это поле может быть нулевым. Вот что у меня в моей миграции:

 val schema = realm.schema.get(ZOLA_NOTIFICATION) if (!(schema?.hasField("agentId") ?: false)) { schema.addField("agentId", Long::class.java) } 

Однако при выполнении этой миграции появляется сообщение об ошибке:

 Non-fatal Exception: io.realm.exceptions.RealmMigrationNeededException Field 'agentId' does not support null values in the existing Realm file. Either set @Required, use the primitive type for field 'agentId' or migrate using RealmObjectSchema.setNullable(). 

Как указать, что Long::class.java должен быть типом NULL в коде миграции?

К сожалению,

 Long::class.java // kotlin 

эквивалентно

 long.class // java Long::class.javaPrimitiveType // kotlin 

Но то, что вам нужно добавить для nullable Long в Realm,

 Long.class // java 

Поэтому вам нужно использовать

 Long::class.javaObjectType // Long.class 

В процессе миграции вы можете превратить обязательное поле в поле с RealmObjectSchema.setNullable(String field, boolean nullable) значением, используя RealmObjectSchema.setNullable(String field, boolean nullable) .

Intereting Posts
varargs, чтобы карта в Котлин Kotlin – заводская функция для класса с частным конструктором yield бросает исключение KotlinNullPointerException в buildSequence для проектов maven Внедрение интерфейса Java – Kotlin Написание JSP в kotlin с maven – Ошибка создания класса сервлета, ClassNotFoundException Android Kotlin: java.lang.NoClassDefFoundError: сбой разрешения: <KotlinObject> Как зарегистрировать InstanceCreator с Gson в Котлине? Android Parcelable в Kotlin: CREATOR не найден на Parcelable class Способы запутывания доступа к привилегированным частным, но на самом деле публичным членам класса для использования их в встроенных методах Как использовать объект Котлина путем отражения Как отключить «Конвертировать Java в Kotlin при вставке» в IntelliJ IDEA? Как переопределить метод открытого класса Java в Котлине? Как сгенерировать файл kotlin из обработчика аннотаций? Функция расширения в перечислителе, `values ​​()` недоступна? Vert.x Service Proxies от Kotlin с vertx-codegen