Неоднозначное использование observe firebase DB

#swift #firebase #firebase-realtime-database #swift3

# #swift #firebase #firebase-база данных в реальном времени #swift3

Вопрос:

Я действительно не могу понять, что не так?
Я пытаюсь загрузить некоторые данные настроек с Settings узла firebase. Тот же код для других узлов в других функциях работает, но этот неоднозначен. Почему?

 var ref:FIRDatabaseReference!  //Global variable

     override func viewDidLoad() {
        super.viewDidLoad()


        self.mapView.delegate = self

            if CLLocationManager.locationServicesEnabled() {

                locationManager.delegate = self
                locationManager.desiredAccuracy = kCLLocationAccuracyBest
                locationManager.requestWhenInUseAuthorization()
                locationManager.startUpdatingLocation()

              //  monitorRegion()

            } else {

                // Alert to enable location services on iphone first
            }

            ref = FIRDatabase.database().reference(fromURL: "https://*******.firebaseio.com/")
            //The error is here
            ref.child("Settings").child("service_types").observe(.value) { (snapshot) in

            }


        // Do any additional setup after loading the view.
    }
 

Комментарии:

1. Ошибка в строке ref = .. или ref.child("Settings")

2. @Dravidian ссылка на дочерний элемент («Настройки»)

3. Проверьте ответ @ronatory? И обновите свой вопрос фактической ошибкой

4. Какие-либо обновления? @KeghamK.

Ответ №1:

Измените это:

 ref.child("Settings").child("service_types").observe(.value) { (snapshot) in

}
 

к этому:

 ref.child("Settings").child("service_types").observe(.value, with: { snapshot in

})
 

См. Также раздел документации firebase Прослушивание событий значений

Ответ №2:

Вы могли бы написать свой вызов примерно так:

 ref
  .child("Settings")
  .child("service_types")
  .observe(.value) { (snapshot: FIRDataSnapshot) in
    // your code
  }
 

или

 ref
  .child("Settings")
  .child("service_types")
  .observe(.value, with: { snapshot in
    // your code
  })
 

Ответ №3:

эта функция для меня:

 ref.child("Settings").child("service_types").observe(.childAdded, with: { (snapshot) -> Void in
    //your code
}