打印Firebase-iOS Swift 4中的所有子列

打印Firebase-iOS Swift 4中的所有子列,ios,swift,firebase,firebase-realtime-database,swift3,Ios,Swift,Firebase,Firebase Realtime Database,Swift3,我的用户表中有2条记录 此代码如下所示 let fcmTokenRef = Database.database().reference().root.child("users").child(id!).child("fcmToken") fcmTokenRef.observe(DataEventType.value, with: { (snapshot) in print(">>",snapshot) }) 将打印出一个孩子的令牌 如何调整代码以打印我所有孩子的代币 您

我的用户表中有2条记录

此代码如下所示

let fcmTokenRef = Database.database().reference().root.child("users").child(id!).child("fcmToken")
fcmTokenRef.observe(DataEventType.value, with: { (snapshot) in
    print(">>",snapshot)
})
将打印出一个孩子的令牌


如何调整代码以打印我所有孩子的代币

您正在请求一次性读取,因此您正在读取一次数据。您需要使用
.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!)”)
})
@普夫说了一些非常重要的事情:

添加的子事件为您查询的节点下的每个匹配子事件激发。如果没有匹配的孩子,它将不会开火


您正在请求一次性读取,因此您正在读取一次数据。您需要使用
.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!)”)
})
@普夫说了一些非常重要的事情:

添加的子事件为您查询的节点下的每个匹配子事件激发。如果没有匹配的孩子,它将不会开火

你可以试试

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)
     }
})
你可以试试

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)
     }
})


@不需要kyo,childAdded循环遍历集合中的每个孩子。所以没什么好担心的,如果不是,为什么要把它作为你答案的一部分?我可以删除它吗?而且你建议的代码似乎格式不正确。请参阅此错误:已更新,同时使用xcode建议的卷发更新卷发。ThanksI尝试了你的代码,它似乎编译得很好,但当在iPhone上运行时,它崩溃了,并向我显示了以下错误:@kyo不是必需的,childAdded循环了集合中的每个孩子。所以没什么好担心的,如果不是,为什么要把它作为你答案的一部分?我可以删除它吗?而且你建议的代码似乎格式不正确。请参阅此错误:已更新,同时使用xcode建议的卷发更新卷发。谢谢我试过你的代码,它似乎编译得很好,但在iPhone上运行时,它崩溃了,并向我显示了以下错误:1 observe用
observeSingleEvent替换
observeSingleEvent
你的代码编译得很好,但在手机上运行时卡在这里:你能详细说明一下吗?我遗漏了你的代码吗?你更新的代码编译得很好,在手机上运行得很好。我现在在我的控制台上得到了这些。什么是
$0
意味着什么?对于1,请用
observeSingleEvent
替换
observeSingleEvent
您的代码编译得很好,但在手机上运行时卡在这里:你能详细说明一下吗?我遗漏了你的代码吗?你更新的代码编译得很好,在手机上运行得很好。我现在在我的控制台上得到了这些
$0
是什么意思?