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

Вот мой код:
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. Как я могу получить данные от всех детей?
Если у вас есть какие-либо вопросы, просто дайте мне знать. Спасибо за любую помощь!





Вы должны слушать 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)
}
})
Вы захотите прикрепить наблюдателя на один уровень выше в 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.
Ты мой герой. Спасибо!
Да я поменял. Мой реф выглядит так:
let ref = Database.database().reference(withPath: "Mosok")