Android Firebase RealtimeDatabase检索快照对象异常
这是我的模型课Android Firebase RealtimeDatabase检索快照对象异常,android,firebase,kotlin,firebase-realtime-database,Android,Firebase,Kotlin,Firebase Realtime Database,这是我的模型课 @Parcel data class ClientModel( var name: String? = "", var phone: String? = "", var princpalAddresse: String? = "", var homeAddresse: String? = "", var travailleAddresse: String
@Parcel
data class ClientModel(
var name: String? = "",
var phone: String? = "",
var princpalAddresse: String? = "",
var homeAddresse: String? = "",
var travailleAddresse: String? = "",
var email: String? = "",
var userToken: String? = "",
var principalAddresseCoords: Pair<Double, Double>? = null,
var homeAddresseCoords: Pair<Double, Double>?= null,
var workAddresseCoords: Pair<Double, Double>? = null,
)
但是!当我尝试使用singleValueEventListener获取快照时,由于成对变量,我得到了异常
val utilisationInfo = snapshot.getValue(ClientModel::class.java) //todo CRASH
例外情况:
com.google.firebase.database.DatabaseException: Class kotlin.Pair does not define a no-argument constructor. If you are using ProGuard, make sure these constructors are not stripped.
数据库结构:
我认为firebase实时数据库将您的PrincipalAddressCoords视为长的列表,因此在您的客户端模型中将PrincipalAddressCoords的值更改为emptyList(),并将类型更改为列表,正如@Sami Shorman所说,firebase获取了我的Pair实例并将其转换为list,而不是Hashmap!所以我改变了我的课堂模式:
var principalAddresseCoords: HashMap<String,Double>? = null,
var homeAddresseCoords: HashMap<String,Double >? = null,
var workAddresseCoords: HashMap<String,Double >? = null,
var principaAddressCoords:HashMap?=无效的
var homeAddresseCoords:HashMap?=无效的
var workAddresseCoords:HashMap?=无效的
要将数据作为Hashmap,我只需执行以下操作:
clientModel.workAddresseCoords = HashMap<String,Double>().apply {
put("lat",lat)
put("long",long)
}
clientModel.workAddresseCoords=HashMap().apply{
put(“lat”,lat)
put(“long”,long)
}
clientModel.workAddresseCoords = HashMap<String,Double>().apply {
put("lat",lat)
put("long",long)
}