不能@Required或@NotNull

时间:2018-02-01 03:04:30

标签: java android-studio realm

在使用4.3.3REALM进行Android开发时,我收到以下错误:

Error: Field "groupName" with type "pizware.evaluapp.Models.Group" can not be @Required or @NotNull.

但我不会对任何字段使用任何标签。有谁知道发生了什么?

1 个答案:

答案 0 :(得分:8)

当您使用Kotlin时,Realm会检查您的字段的可空性。

例如,

class Blah: RealmObject() {
    var group: Group? = null
}

然后group没有隐式@Required注释。

但如果你这样做

class Blah: RealmObject() {
    var group: Group = Group()
}

这不会起作用,因为Realm无法保证单一链接的不可空性。所以它会抛出你得到的错误。

如果你想忽略这一点,例如你正在建立一个避免空值返回的支持字段

get() = group ?: Group()

然后你可以使用(自4.1.0开始):

kapt {
  arguments {
    arg("realm.ignoreKotlinNullability", true)
  }
}

在这种情况下,Realm不会试图隐含地处理你的可空性(并将Kotlin的可空性映射到字段' s @Required)。但是,只有在你真正知道自己在做什么的时候才应该使用它。