Почему мой условный оператор иногда срабатывает, а другие не работают, когда я получаю значение из Cloud Firestore? - PullRequest
0 голосов
/ 18 апреля 2020

Я пытался получить логическое значение из Firestore, чтобы иметь возможность контролировать состояние моего приложения. Например, если извлеченное значение имеет значение true (ie 1), представление должно действовать в одном направлении, а если оно имеет значение false (ie 0), оно должно действовать другим образом.

Однако иногда это не удается и работает другие, поэтому я не смог решить эту проблему сам! Ниже приведен мой код, который я вызвал в viewWillAppear () (я надеюсь, что это правильно, так как я хочу, чтобы он принимался каждый раз, когда появляется мое представление.

func getStatus() {
    let db = Firestore.firestore()
    let docRef = db.collection("collection").document("doc")

    docRef.addSnapshotListener { (doc, e55) in
        guard let doc = doc, doc.exists else {
            return
        }

        guard let instruction = doc.get("new") else {
            return
        }

        if instruction as? Bool == true {
            UIView.animate(withDuration: 3, animations: {
                self.button.alpha = 0
            })
        } else if instruction as? Bool == false {
            self.view.backgroundColor = .black
        }


    }
}

Эта функция вызывается в viewWillAppear (). Однако иногда случаются оба события: ie, кнопка исчезает, а backGround становится черным.

[Пожалуйста, дайте мне знать, если этот вопрос не разрешен или мне нужно сделать дополнительные разъяснения:)]

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