извлекать и извлекать данные из FireBase в Swift - PullRequest
0 голосов
/ 05 февраля 2020

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

  func getData(){
      ref = Database.database().reference()
      let userID = Auth.auth().currentUser?.uid

          ref.child("users")
               .queryOrdered(byChild: "uid")
               .queryEqual(toValue:userID)
               .observe(.value) { (snapshot, error) in
               if error == nil{// alert} elses{

                   if let data = snapshot.value as? NSDictionary {
                   if snapshot.exists() {

          for a in ((snapshot.value as AnyObject).allKeys)!{
          let users = data.value(forKey:a as! String) as! NSDictionary


            let address = users.value(forKey:"Address") as! NSDictionary
            self.lblAddressNickname.text = address.value(forKey:"addressNickname") as? String
         }

                           }
                       }

                   }
           }
  }

1 Ответ

0 голосов
/ 05 февраля 2020

Итак, на данный момент я понимаю вопрос о том, что у вас есть проблема при получении данных из базы данных, когда в базе данных нет данных, и затем придет предупреждение, и оно будет перенаправлено на новый контроллер?

Итак, на основании насколько я понимаю, я дам ответ, если возникнут какие-либо проблемы с пониманием, а затем ответьте мне?

Сначала вам нужно проверить, есть ли у конкретного пользователя какие-либо данные в базе данных firebase, поэтому, если данных нет, функция оповещения вызовет

if let data == data
{

fetch_logic is here

}

else
{

let alert = UIAlertController(title:"Add Data",message:"",preferredStyle: .alert)

let action = UIAlertAction(title: "Add Button", style: .default) { (UIAlertAction) in

}
 alert.addAction(action)

 present(alert,animation:true,completion:true)

}
...