完成处理程序未按预期调用 Swift
completion handler does not get called as supposed Swift
我正在尝试从完成处理程序获取 uid,以便我可以构建路径并从我的 Firebase 数据库中检索一些项目,但是 myuserLogged
在 dbRef
获取时评估为 nill叫。
我的问题是我的完成处理程序是在 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()
}
完成处理程序是异步处理的,因为该操作可能需要一些时间。如果之后需要 dbRef
,则需要将其放入完成处理程序中。
我正在尝试从完成处理程序获取 uid,以便我可以构建路径并从我的 Firebase 数据库中检索一些项目,但是 myuserLogged
在 dbRef
获取时评估为 nill叫。
我的问题是我的完成处理程序是在 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()
}
完成处理程序是异步处理的,因为该操作可能需要一些时间。如果之后需要 dbRef
,则需要将其放入完成处理程序中。