2
好的,我的文本标签应显示用户的名称,但代码在用户数据获取之前运行,并且数据加载时标签不会更改。加载firebase数据时重新加载视图控制器swift
第一次我打印的用户名我得到零,但是当我在Firebase调用中打印时,我得到了用户名。我该如何做到这一点,所以我不必在Firebase调用中更改标签?
var ref: FIRDatabaseReference!
var user: User!
override func viewDidLoad() {
super.viewDidLoad()
ref = FIRDatabase.database().reference()
fetchUser()
self.titleLabel.text = user?.name
// Returns nil
print(user?.name)
}
func fetchUser() {
ref.child("users").child(userID!).observeSingleEvent(of: .value, with: { (snapshot) in
let value = snapshot.value as? NSDictionary
let name = value?["name"] as? String ?? ""
let birthdate = value?["birthdate"] as? String ?? ""
let gender = value?["gender"] as? String ?? ""
self.user = User(name: name, birthdate: birthdate, gender: gender)
// Now i get the users name
print(self.user.name)
}) { (error) in
print(error.localizedDescription)
}
}