Получите данные от всех детей в firebase, используя swift - PullRequest
0 голосов
/ 17 июня 2019

У меня есть база данных Firebase в реальном времени.Это выглядит так:

image

Вот мой код:

ref.child("2").observeSingleEvent(of: .value, with: { snapshot in

        guard let dict = snapshot.value as? [String:Any] else {
            print("Error")
            return
        }
        let latitude = dict["Latitude"] as Any
        let longtitude = dict["Longtitude"] as Any
        print(longtitude)
        print(latitude)
    })

Моя проблема в том, что мой код извлекает данные только от ребенка с именем 2.Как я могу заставить его получать данные от всех детей?

Если у вас есть какие-либо вопросы, просто дайте мне знать.Спасибо за любую помощь!

Ответы [ 2 ]

1 голос
/ 18 июня 2019

Вы захотите присоединить наблюдателя на один уровень выше в JSON, а затем зациклить дочерние узлы:

ref.observeSingleEvent(of: .value) { snapshot in
    for case let child as FIRDataSnapshot in snapshot.children {
        guard let dict = child.value as? [String:Any] else {
            print("Error")
            return
        }
        let latitude = dict["Latitude"] as Any
        let longtitude = dict["Longtitude"] as Any
        print(longtitude)
        print(latitude)
    }
}

Синтаксис цикла, взятый из Перебирать дочерние снимки в Firebase , но также видеть Как зациклить все дочерние Firebase сразу в одном цикле? и Циклы в Firebase

1 голос
/ 17 июня 2019

Вам нужно послушать ref

ref.observeSingleEvent(of: .value, with: { snapshot in

        guard let dict = snapshot.value as? [String:[String:Any]] else {
            print("Error")
            return
        }
        Array(dict.values).forEach {
           let latitude = $0["Latitude"] as? String
           let longtitude = $0["Longtitude"] as? Int
           print(longtitude)
           print(latitude)
        }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...