Распечатать все детские столбцы из Firebase - iOS Swift 4 - PullRequest
0 голосов
/ 07 декабря 2018

В моей таблице пользователей 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 голосов
/ 07 декабря 2018

Можно попробовать

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)
     }
})
0 голосов
/ 07 декабря 2018

Вы запрашиваете однократное чтение, следовательно, вы читаете данные один раз.Вам нужно использовать .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 говорит о чем-то очень важном: различия между добавленной дочерней и ценностной базой

Событие child_added запускается для каждого соответствующего дочернего элемента в узле, который вы запрашиваете.Если нет подходящих детей, он не сработает.

...