Попытка установить пару переменных из значений полей Firebase ... проблема асинхронной функции - PullRequest
3 голосов
/ 28 января 2020

Я пытаюсь прочитать поле из моей базы данных Firestore Firebase и назначить его глобальной переменной. Тем не менее, переменная всегда кажется переменной. Я проверил много форумов, и все они говорят, что это асинхронная функция. Это смущает меня, и мне нужна помощь с моим конкретным примером c.

func getDropDownOptions(){
    let db = Firestore.firestore()
    let user = Auth.auth().currentUser
    let Uid = user!.uid

    db.collection("users").whereField("uid", isEqualTo: Uid).getDocuments { (snapshot, error) in

            if error != nil {
                print(error!)
            } else {
                for document in (snapshot?.documents)! {
                    if let data1 = document.data()["int1"] {
                        self.int1 = data1 as! String
                        if let data2 = document.data()["int2"] {
                            self.int2 = data2 as! String
                            if let data3 = document.data()["int3"] {
                                self.int3 = data3 as! String
                                if let data4 = document.data()["int4"] {
                                    self.int4 = data4 as! String
                                    if let data5 = document.data()["int5"] {
                                        self.int5 = data5 as! String
                                    }
                                }
                            }
                        }
                    }
                }
            }
    }
}

int1 - int5 уже объявлены как переменные. Когда я пытаюсь распечатать их после вызова этой функции, они просто возвращают значение по умолчанию, которое я для них установил.

Я абсолютно не знаю, в чем проблема. Пожалуйста, помогите!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...