Этот ответ будет зависеть от того, есть ли в счетчиках другие дочерние узлы. Так что, если это просто
counters
currentLoggedInUsers: 2
, то следует использовать следующий код, имея в виду, что .value приведет к немедленному запуску кода в замыкании.
let ref = self.ref.child("counters").child("currentLoggedInUsers")
ref.observe(.value, with: { snapshot in
print(snapshot.key, snapshot.value)
})
наблюдает за указанным c дочерним узлом на предмет изменений.
обратите внимание, что self.ref указывает на мой firebase как класс var
Чтобы немного расширить, предположим, что у вас есть другие дочерние узлы в счетчиках и Вы также хотите следить за их изменениями.
counters
currentLoggedInUsers: 2
totalUsers: 100
usersFavFood: Tacos
и один способ справиться с этим -
let ref = self.ref.child("counters")
ref.observe(.childChanged, with: { snapshot in
let nodeKey = snapshot.key
switch nodeKey {
case "currentLoggedInUsers":
let count = snapshot.value as? Int ?? 0
print("logged in users changed to: \(count)")
case "totalUsers":
let totalCount = snapshot.value as? Int ?? 0
print("total Users: \(totalCount)")
case "usersFavFood":
let food = snapshot.value as? String ?? "No food for you"
print("favorite food changed to: \(food)")
default:
print("some node changed but it's not handled")
}
})