首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能为@Required或@NotNull

不能为@Required或@NotNull
EN

Stack Overflow用户
提问于 2018-02-01 11:04:30
回答 1查看 2.1K关注 0票数 5

当使用REALM4.3.3版本进行Android开发时,我得到以下错误:

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

但我没有对任何字段使用这些标签。有人知道这是怎么回事吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-01 18:31:30

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

例如,

代码语言:javascript
复制
class Blah: RealmObject() {
    var group: Group? = null
}

那么group就得不到隐式的@Required注释。

但如果你这样做了

代码语言:javascript
复制
class Blah: RealmObject() {
    var group: Group = Group()
}

这是行不通的,因为Realm不能保证单个链接的非空性。所以它会抛出你得到的错误。

如果您想忽略这一点,例如,您正在创建一个避免空值返回的后备字段

代码语言:javascript
复制
get() = group ?: Group()

然后您可以使用(从4.1.0开始):

代码语言:javascript
复制
kapt {
  arguments {
    arg("realm.ignoreKotlinNullability", true)
  }
}

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

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48554699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档