¿Cómo especifico que un campo encuadrado puede ser anulable en mi código de migration de Realm?

Estoy usando Kotlin y quiero agregar un nuevo campo a un RealmObject y ese campo puede ser anulable. Esto es lo que tengo en mi migration:

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

Sin embargo, recibo un post de error cuando se ejecuta esta migration:

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

¿Cómo especifico que Long::class.java debería ser el tipo anulable en el código de migration?

Desafortunadamente,

 Long::class.java // kotlin 

es equivalente a

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

Pero lo que necesita agregar para el nulo Long in Realm es

 Long.class // java 

Entonces necesitas usar

 Long::class.javaObjectType // Long.class 

En la migration, puede convertir un campo obligatorio en un campo que RealmObjectSchema.setNullable(String field, boolean nullable) utilizando el RealmObjectSchema.setNullable(String field, boolean nullable) .

  • Error de compilation de time al convertir RealmObject Class a Kotlin
  • Realm, findAllSorted y distinct
  • No se puede configurar el Reino en el proyecto usando Kotlin
  • ¿Cambiar notifications en Realm para objects internos?
  • Uso perezoso de Kotlin
  • El complemento "kotlin-noarg" no funciona en el Reino
  • Realm Nested Object sort
  • Realm executeTransactionAsync no escribe datos en DB
  • Cómo arreglar "La característica no es parte del esquema para este Reino" en Kotlin Realm Extention
  • Basic Realm + Kotlin: RealmObject no está configurando valores pasados
  • Kotlin - Use Realm Module en android