【问题标题】:Kotlin class does not get its boolean value from firebaseKotlin 类没有从 firebase 获取其布尔值
【发布时间】:2018-03-06 11:48:45
【问题描述】:

我的 kotlin 类为

class Center : Serializable {
var active: Boolean? = null
var address: String? = null
var isJobAccessGranted: Boolean? = null
}

这是我获得价值的方式

 //from java class
   @Override
        public void onChildChanged(DataSnapshot dataSnapshot, String s) {
            centerMap.put(dataSnapshot.getKey(), dataSnapshot.getValue(Center.class));
        }

但问题是我得到active 字段的值没有任何问题。但isJobAccessGranted 布尔字段始终保持为空。我已经测试了一些其他布尔删除 is 前缀,它工作正常。当我使用isActiveisJobAccessGranted 时,我没有得到布尔值。谁能解释我为什么会面临这个问题。 #AskFirebase

【问题讨论】:

  • 您有一个名为 isJobAccessGranted 的属性,因此适当生成的 getter 将是 isIsJobAccessGranted。也许是问题所在?
  • no @mike 它没有生成 isIsJobAccessGranted
  • 不知道这背后的确切原因,但使用@field:JvmField 而不是var isJobAccessGranted: Boolean? = null 解决了我的问题

标签: android firebase firebase-realtime-database kotlin kotlin-android-extensions


【解决方案1】:

Kotlin 中的comment 中所述,您应该为类中的每个Boolean 字段添加@field:JvmField,因为当Kotlin 转换为Java 时,它会生成setter,其名称无法被JSON 解析器解析.而@field:JvmField注解覆盖了这个特性,就会有正确的setter名称,并且会正确解析JSON。

【讨论】:

  • 为什么这不在 Firebase Kotlin 文档的首页?
  • @r3dm4n 现在在Firestore docs 上。感谢您的建议!
猜你喜欢
  • 2016-11-21
  • 1970-01-01
  • 2016-07-08
  • 2012-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-19
相关资源
最近更新 更多