Лучший способ получить значение из снимка данных? - PullRequest
1 голос
/ 26 марта 2020

В Android Studio, используя Firebase Realtime Database и Kotlin, чтобы получить значение узла, вы получите следующий код:

val parentNodePath: String = "nodeParentPath"
val nodePath: String = "nodePath"

val nodeRef = FirebaseDatabase.getInstance().reference.child(parentNodePath)

var value: Int

nodeRef.addListenerForSingleValueEvent(object : ValueEventListener{
override fun onDataChange(dS: DataSnapshot) {
    value = dS.child(nodePath).getValue(Int::Class.java)!!
    //or also 
    //value = dS.child(nodePath).value as Int
}

override fun onCancelled(dE: DatabaseError) {}
})

Было бы нормально определить расширение функция, которая реализует перегрузку оператора get для получения значения в пути, и было бы лучше использовать ключевое слово inline, поэтому при запуске ей не нужно вызывать функцию, а вместо этого она вставляется внутрь код?

/*inline*/ operator fun DataSnapshot.get(path: String): Any? =
    this.child(path).value

Будет использоваться как value = dS[nodePath] as Int

...