Вся документация и руководства по этому вопросу устарели, поскольку последняя версия swift ~ кажется простой, но не работает, как бы я ни писал код.
Я так и не нашел ответа, но вот мой обходной путь. Если вы знаете ответ, дайте мне знать.
Обходной путь: l oop НаблюдатьSingleEvent, пока значение не изменится.
Под viewDidLoad: waitForChange()
Функция:
func waitForChange() {
self.ref.child("users").child(self.userID).child("billingUpdated").observeSingleEvent(of: .value) { (snapshot) in
let billingUpdated = snapshot.value as! Int
if billingUpdated == 0 {
DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
print("looping again")
self.waitForChange()
}
}
else{
print("value has been updated")
}
}
}
Я добавил DispatchQueue.main.asyncAfter
, поэтому l oop не запускается 100 раз в секунду .