作者:唯爱-U澄_155 | 来源:互联网 | 2023-05-18 01:55
我正在尝试使用Kotlin将数据从Firebase反序列化到POJO,这是我的POJO类:classMessage{varnumber:String?nullvarmessage:
我正在尝试使用Kotlin将数据从Firebase反序列化到POJO,这是我的POJO类:
class Message {
var number: String ?= null
var message: String? = null
var timestamp: LOng= 0L
var isHandled: Boolean ?= false
var type:String ?=null
}
这是我从Firebase检索数据的代码
val query = Fire.REF.child("sms").orderByChild("type").equalTo("outbox-unsent")
query.addChildEventListener(object : ChildEventListener {
override fun onChildAdded(dataSnapshot: DataSnapshot, key: String) {
val outbox = dataSnapshot.getValue(Message::class.java)
Log.d("BS", "Background Service $outbox")
}
//......
});
这是我在Firebase上的数据结构
"sms":{
"-KI3ar91oBXGNpXXrOCS" : {
"handled" : false,
"message" : "Pak kenapa koneksi...",
"number" : "+6285830166314",
"timestamp" : 1463587399000,
"type" : "inbox"
},
//.......//
}
当我执行代码时,会引发错误:
java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter key
上面的代码我的错误在哪里?
解决方法:
正如奥古斯托(Augusto)所说,Kotlin是空值安全的,但在上述功能上,关键参数可能为空.
所以代码应该像这样
onChildAdded(dataSnapshot: DataSnapshot, key: String?)
在关键参数后添加问号