Вот проблема;структура, вероятно, слишком глубока, и ваш код не соответствует структуре.
Вы наблюдаете узел обзора, который имеет два дочерних узла
Review
-75YFH...
-MAc9ou...
, и имейте в виду эти дочерние узлы.узлы также имеют дочерние узлы.
-7590W...
-LM90W...
-LM90o...
-MAc9ou...
-LM90a
Цикл for зацикливается на дочерних узлах верхнего уровня -75YFH и -MAc9ou, так что этот код
let placeSnap = child as! DataSnapshot
let ratingsSnap = placeSnap.childSnapshot(forPath: "STAR")
действительно
let ratingsSnap = -75YFH.childSnapshot(forPath: "STAR")
и
let ratingsSnap = -MAc9ou.childSnapshot(forPath: "STAR")
и, как вы можете видеть, STAR не является дочерним элементом этих узлов.
В зависимости от вашей структуры внутри каждого из двух верхних узлов необходим другой циклиз -75YFH и -MAc9ou для итерации по своим дочерним элементам и получения узла STAR
var counter = 0
placesRef.observeSingleEvent(of: .value, with: { snapshot in
for child in snapshot.children { //this is -75YFH and -MAc9ou
let placeSnap = child as! DataSnapshot
for childOfPlace in placeSnap.children { //this is -LM90W and -LM90o
let childOfPlaceSnap = childOfPlace as! DataSnapshot
//let ratingsSnap = childOfPlaceSnap.childSnapshot(forPath: "STAR")
//I prefer the following...
let dict = childOfPlaceSnap.value as! [String: Any]
let val = dict["STAR"] as! Int
counter += val
}
}
print("total stars: \(counter)") //or tableView.reloadData()
})
Примечание: набрал этот код на моем iPad, чтобы он не тестировался, поэтому не копируйте вставку.Концепция звука.