Я пытаюсь получить uid из обработчика завершения, чтобы я мог построить путь и получить некоторые элементы из моей базы данных Firebase, но myuserLogged
оценивает нуль к моменту dbRef
получает вызов ,обработчик завершения не вызван как предполагаемый Swift
Мои проблемы в том, что мой обработчик завершения называется после того, как dbRef
уже был вызван, а не наоборот. Я думал, что мой код будет выполняться в строке 1. FIRAuth.auth()? .... 2. dbRef = FIRDatabase ....
override func viewDidLoad() {
super.viewDidLoad()
FIRAuth.auth()?.addAuthStateDidChangeListener({ (auth:FIRAuth, user:FIRUser?) in
if let userSignedIn = user {
self.myuserLogged = userSignedIn.uid
print("Welcome buddy \(self.myuserLogged)")
}
})
print("brother \(self.myuserLogged)")
dbRef = FIRDatabase.database().reference().child("Users/\(myuserLogged)")
startObservingDB()
}
Таким образом, в основном он работает следующим образом: в то время как addAuthStateDidChangeListener захватывает информацию из базы данных и заполняет переменную auth & user, выполнение кода продолжается до dbRef, и как только addAuthStateDidChangeListener завершит свою задачу, он продолжит выполнение кода после 'in' , Кажется, я понял. – bibscy
@bogdanbarbulescu Звучит правильно. – dersvenhesse