不能为@Required或@NotNull

Eri*_*piz 4 java realm android-studio

当使用Android开发版本4.3.3REALM,出现以下错误:

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

但我不会在任何字段中使用任何这些标签。有人知道发生了什么吗?

Epi*_*rce 8

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

例如,

class Blah: RealmObject() {
    var group: Group? = null
}
Run Code Online (Sandbox Code Playgroud)

然后group不会得到隐式@Required注释。

但是如果你这样做

class Blah: RealmObject() {
    var group: Group = Group()
}
Run Code Online (Sandbox Code Playgroud)

这是行不通的,因为Realm无法保证单个链接的不可为空性。这样会抛出您得到的错误。

如果由于例如要创建一个避免返回空值的后备字段而忽略此设置

get() = group ?: Group()
Run Code Online (Sandbox Code Playgroud)

然后就可以使用(从4.1.0版本开始):

kapt {
  arguments {
    arg("realm.ignoreKotlinNullability", true)
  }
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,Realm不会尝试隐式处理您的可空性(并将Kotlin可空性映射到该字段的@Required)。但是,只有在真正知道自己在做什么的情况下,才应使用此功能。