Java Kotlin Firebase反序列化
我正在尝试使用Kotlin将数据从Firebase反序列化到POJO,这是我的POJO类:Java Kotlin Firebase反序列化,java,firebase,kotlin,firebase-realtime-database,Java,Firebase,Kotlin,Firebase Realtime Database,我正在尝试使用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("sm
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
我在上述代码上的错误在哪里?正如奥古斯托在上文所说,Kotlin是空安全的,但在上述函数中,关键参数可能为空。 所以代码应该是这样的
onChildAdded(dataSnapshot: DataSnapshot, key: String?)
在关键参数后添加问号我对firebase没有任何经验,但eventlistener中的参数
关键
似乎为空。能否将onchildaded的参数更改为String?
并重试?我的错,是的,我跟踪了第二个参数,该参数可能为null。这个问题解决了吗?有人能发布一个有效的解决方案来解决这个问题吗?正如奥古斯托在上面所说,Kotlin是空安全的,但是在上面的函数中,关键参数可能是空的。因此,代码应该像这样onchildaded(dataSnapshot:dataSnapshot,key:String?
在key参数后添加问号