从Firebase打印所有子级列-iOS Swift 4

时间:2018-12-07 16:55:38

标签: ios swift firebase firebase-realtime-database swift3

我的用户表中有2条记录

enter image description here

下面的代码

let fcmTokenRef = Database.database().reference().root.child("users").child(id!).child("fcmToken")
fcmTokenRef.observe(DataEventType.value, with: { (snapshot) in
    print(">>",snapshot)
})

将打印出孩子的令牌

enter image description here

如何调整代码以为所有孩子打印全部令牌?

2 个答案:

答案 0 :(得分:1)

您请求一次读取,因此您只读取一次数据。您需要使用.childAdded

尝试一下:

let fcmTokenRef = Database.database().reference().child(“users”)
    fcmTokenRef.observe(.childAdded, with: { (snapshot) in
    print(">>",snapshot)
     guard let data = snapshot as? NSDictionary else {return}
     var each_token = data[“fcmToken”] as? String
     print(“all tokens: \(each_token!)”)
})

@puf说了一些非常重要的内容: differences between child added and value firebase

  

在您查询的节点下,每个匹配的孩子都会触发child_add事件。如果没有匹配的子代,它将不会触发。

答案 1 :(得分:1)

您可以尝试

let fcmTokenRef = Database.database().reference().root.child("users").observe(DataEventType.value, with: { (snapshot) in 
      print(">>",snapshot)

      let dic = snapshot.value as! [String:[String:Any]]
      Array(dic.values).forEach { 
        let str = $0["fcmToken"] as! String
        print(str)
     }
})