Kotlin Firebase反序列化
我试图从Kylin反序列化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?)
在关键参数之后添加问号