如何在我的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
应该是迁移代码中的可空类型?
不幸,
Long::class.java // kotlin
相当于
long.class // java Long::class.javaPrimitiveType // kotlin
但是,你需要添加的可空Long in Realm是
Long.class // java
所以你需要使用
Long::class.javaObjectType // Long.class
在迁移中,您可以使用RealmObjectSchema.setNullable(String field, boolean nullable)
方法将必填字段转为可空字段。
- 由于app:compileDebugKotlin,Jenkins gradle构建失败
- 无法使API调用urlfetch.Fetch在既不是原始请求线程也不是由ThreadManager创建的线程的线程中
- 如何实现一个延迟加载recyclerView适配器,像使用kotlin的realm recyclerView适配器
- Kotlin – 如何从一个接口“延迟”一个var overrided?
- Realm插件导致“app:compileInstantrunconfigDebugKotlin”任务失败
- 使用Kotlin无法在项目中设置Realm
- CapturedTypeConstructor(*)不是RealmModel的子类型
- 使用@PrimaryKey初始化Realm对象0(零)在第二个对象上失败
- 错误:包含非法的最终字段-Kotlin
- 境界Kotlin不在架构中
- 在Kotlin项目中应用Realm插件会导致编译错误