我正在尝试从完成处理程序中获取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()
}
答案 0 :(得分:1)
完成处理程序是异步处理的,因为操作可能需要一些时间。如果之后需要dbRef
,则需要将其放入完成处理程序。