【问题标题】:How to initialize default values for GeoPoint in a data class如何在数据类中初始化 GeoPoint 的默认值
【发布时间】:2019-08-19 20:00:12
【问题描述】:
我正在尝试将文档从 Firestore 转换为对象,但是当我创建我的数据类时,我不知道如何使用默认值初始化 GeoPoint,因为它需要为空构造函数声明
data class MapObj(val geopoint:Geopoint) //--> how to initialize it to get an empty constructor
问题在于这一行
val obj = snapshot.toObject(MapObj::class.java)
谢谢
【问题讨论】:
标签:
android
firebase
kotlin
google-cloud-firestore
【解决方案1】:
问题在于 Firestore SDK 没有为 MapObj 找到默认的、没有参数的构造函数。如果 Kotlin 数据类的所有属性都用 val 声明,则它们没有一个。对于声明为 val 的属性,Kotlin 要求在构造函数中指定它们的值,因为它们之后不可能更改。
如果您必须从 Firestore 获取数据类,则必须将其所有属性设为可选 var 并使用默认值,以便 Kotlin 为其生成无参数构造函数。
data class MapObj(var geopoint: Geopoint? = null)