我尝试在 Firestore 上获取名称后返回该名称,但由于某种原因它不起作用。
这是我的代码:
func getName() -> String {
var name = ""
db.collection("users").whereField("email", isEqualTo: user.email!).getDocuments { (snapshot, error) in
if error != nil {
print(error!)
} else {
for document in (snapshot?.documents)! {
name = document.data()["name"] as! String
// if I add `print(name) here, it works.`
}
}
}
return name
}
但它返回一个空字符串:/我想返回实际名称。我该如何解决?
getDocuments
是一个异步函数。这意味着name
变量不会等待函数完成后再继续执行。如果你想从文档中返回返回的名字,可以看一下下面的代码:
func getName(_ completion: (String) -> ()) {
db.collection("users").whereField("email", isEqualTo: user.email!).getDocuments { (snapshot, error) in
if error != nil {
print(error!)
} else {
for document in (snapshot?.documents)! {
name = document.data()["name"] as! String
completion(name)
}
}
}
}
getName { name in
print(name)
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)