我正在尝试创建一个函数,该函数使我更容易通过使用UID和所需字段从Firebase数据库中获取用户数据。当我尝试返回检索到的数据时,会出现问题。检索到的数据可以正常打印,但是当我尝试使用它来设置变量的值时,它为null。
这是使用Firebase Auth和Firebase数据库
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor.white
if(Auth.auth().currentUser != nil) {
var uid : String!
let currentUser = Auth.auth().currentUser
uid = currentUser!.uid
if let uid = uid {
let username = getUserData(uid: uid, data: "username")
print("Username:", username))
}
} else {
print("User not logged in!")
}
}
func getUserData(uid: String!, data: String!) -> String {
let uid = uid
var uData:String = ""
let ref = Database.database().reference()
ref.child("users").child(uid!).observeSingleEvent(of: .value, with: {(snapshot) in
let value = snapshot.value as? NSDictionary
uData = value?[data] as? String ?? ""
return
})
return uData
}
我不确定为什么将username =“”而不是将username设置为返回函数的值。谁能向我解释如何解决此问题,以及为什么它无法按照我认为的方式工作?