gpt4 book ai didi

android - 如何在我的 Realm 迁移代码中指定一个盒装字段可以为空?

转载 作者:太空宇宙 更新时间:2023-11-03 11:54:45 26 4
gpt4 key购买 nike

我正在使用 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

但是你需要在 Realm 中为 nullable Long 添加的是

Long.class // java

所以你需要使用

Long::class.javaObjectType // Long.class 

在迁移中,您可以使用 RealmObjectSchema.setNullable(String field, boolean nullable) 将必填字段转换为可空字段方法。

关于android - 如何在我的 Realm 迁移代码中指定一个盒装字段可以为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44473284/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com