【发布时间】:2020-08-10 15:36:54
【问题描述】:
从firestore获取数据的完成函数
struct User {
let docID: String
let firstName: String
}
var userArray = [User]()
// ...
//....
func getUserData(completion: @escaping ([User]) -> Void) {
var result = [User]()
guard let userID = Auth.auth().currentUser?.uid else {return}
let db = Firestore.firestore()
db.collection("users").whereField("uid", isEqualTo: userID)
.getDocuments() { (querySnapshot, err) in
if let err = err {
print("Error getting documents: \(err)")
completion(result)
return
}
else {
if let snapshot = querySnapshot {
for document in snapshot.documents {
let data = document.data()
let docid = data["docID"] as? String ?? ""
let firstName = data["firstName"] as? String ?? ""
let lastName = data["lastName"] as? String ?? ""
let email = data["email"] as? String ?? ""
let UData = User(docID: docid, firstName: firstName)
result.append(UData)
print(result)
}
}
} //end ELSE
completion(result)
}
}
在 viewWillAppear 中调用它
override func viewWillAppear(_ animated: Bool) {
getUserData{ (result) in
self.userArray.append(contentsOf: result)
print(self.userArray)
}
}
打印以下内容
[DaDoc.HomeViewController.User(docID: "avGhsRI1x0c", firstName: "Raul")]
问题
-
为什么“DaDoc.HomeViewController.User”这个被附加到数组中? 我不能用“!”打开它抛出错误“无法强制展开非可选类型'[HomeViewController.User]'的值”
-
我如何在此处访问密钥(docID、名字) [DaDoc.HomeViewController.User(docID: "avGhsRI1x0c", firstName: "Raul")]
任何帮助表示赞赏!
【问题讨论】:
-
把你的结构带出课堂会解决你的问题
-
检查一下,如果您需要进一步的帮助,请告诉我
-
@jawadAli - 感谢您的回复。仍然得到 [DaDoc.User(docID: "avGhsRI1x0c", firstName: "Raul")]... 也无法解包... 我应该将其移至单独的文件吗?
-
什么是
DaDoc? -
是的,把它移到单独的文件中
标签: swift completion