Ios 从Firebase数据库检索数据时执行顺序关闭
我想从Firebase检索数据,并在函数中创建Ios 从Firebase数据库检索数据时执行顺序关闭,ios,swift,firebase-realtime-database,Ios,Swift,Firebase Realtime Database,我想从Firebase检索数据,并在函数中创建User()对象。我上了以下课程: class DatabaseQueries { // Database reference var ref: DatabaseReference? func findUserInfo() -> User { // Haal de userID op waaronder info is opgeslagen in de database. let use
User()
对象。我上了以下课程:
class DatabaseQueries {
// Database reference
var ref: DatabaseReference?
func findUserInfo() -> User {
// Haal de userID op waaronder info is opgeslagen in de database.
let userID = Auth.auth().currentUser?.uid
// ref naar de database.
ref = Database.database().reference()
var user = User(email: "", group: "")
ref?.child("Users").child(userID!).observeSingleEvent(of: .value, with: { (snapshot) in
// Get user value
let value = snapshot.value as? NSDictionary
let group = value?["group"] as? String ?? ""
let email = value?["mail"] as? String ?? ""
print(group)
print(email)
user.email = email
user.group = group
}) { (error) in
print(error.localizedDescription)
}
print("Execute return")
return user
}
}
仅在订单关闭时返回数据。终端输出如下:
Execute return
User(email: Optional(""), group: Optional(""))
TestGroup
test.mail@gmail.com
如何首先获取要填充的用户结构,然后获取返回的值?尝试将完成块与调用任何web服务/firebase…等的函数一起使用
func findUserInfo(completion: @escaping (_ user: User) -> Void) {
// Haal de userID op waaronder info is opgeslagen in de database.
let userID = Auth.auth().currentUser?.uid
// ref naar de database.
ref = Database.database().reference()
ref?.child("Users").child(userID!).observeSingleEvent(of: .value, with: { (snapshot) in
// Get user value
let value = snapshot.value as? NSDictionary
let group = value?["group"] as? String ?? ""
let email = value?["mail"] as? String ?? ""
print(group)
print(email)
var user = User(email: email, group: group)
completion(user)
}) { (error) in
print(error.localizedDescription)
var user = User(email: "", group: "")
completion(user)
}
}
尝试将完成块与调用任何web服务/firebase…等的函数一起使用
func findUserInfo(completion: @escaping (_ user: User) -> Void) {
// Haal de userID op waaronder info is opgeslagen in de database.
let userID = Auth.auth().currentUser?.uid
// ref naar de database.
ref = Database.database().reference()
ref?.child("Users").child(userID!).observeSingleEvent(of: .value, with: { (snapshot) in
// Get user value
let value = snapshot.value as? NSDictionary
let group = value?["group"] as? String ?? ""
let email = value?["mail"] as? String ?? ""
print(group)
print(email)
var user = User(email: email, group: group)
completion(user)
}) { (error) in
print(error.localizedDescription)
var user = User(email: "", group: "")
completion(user)
}
}
您需要查看“回调”或“完成处理程序”。Soy上有许多相关问题。您需要查看“回调”或“完成处理程序”。这方面有许多相关问题