Firebase:Swift中snapshot.children.allObjects的Kotlin等价写法是什么?
Swift中
snapshot.children.allObjects对应的Kotlin实现写法 在Firebase Realtime Database的Kotlin SDK里,DataSnapshot.children本身就是Iterable<DataSnapshot>类型,不需要像Swift那样通过allObjects转换数组,直接就能进行遍历、转集合等操作。以下是对应你Swift代码的Kotlin实现:
ref.addListenerForSingleValueEvent(object: ValueEventListener { override fun onDataChange(snapshot: DataSnapshot) { // 获取第一个子节点,对应Swift里的firstChild val firstChild = snapshot.children.firstOrNull() firstChild?.let { println(it.key) } // 将子节点转成List并反转,对应Swift里的arr和reversedArr val arr = snapshot.children.toList() val reversedArr = arr.reversed() // 遍历反转后的数组 for (child in reversedArr) { val someId = child.key println(someId) } } override fun onCancelled(error: DatabaseError) { } })
关键对应点说明:
- Swift里的
snapshot.children.allObjects.first as? DataSnapshot→ Kotlin里用children.firstOrNull(),firstOrNull()会返回null而不是抛出异常,更符合Kotlin的空安全规范。 - Swift里的
snapshot.children.allObjects as! [DataSnapshot]→ Kotlin里直接调用children.toList()就能得到List<DataSnapshot>。 - 数组反转操作
reversed()在Kotlin里直接对List调用即可,用法和Swift一致。
内容的提问来源于stack exchange,提问作者Lance Samaria
相关产品推荐
相关产品推荐

