swift - 从 Firebase 获取用户数据
问题描述
我目前正在尝试显示当前登录的用户的名称,但我似乎无法让它显示名称。任何人都可以看到代码有什么问题吗?
控制台正在打印每个用户的名字,所以我在 uuid 中添加了但现在我收到“使用未解析的标识符 'querySnapshot'”错误
func getData() {
let uuid = UUID().uuidString
guard let currentUser = Auth.auth().currentUser else { return }
let dbUsers = Firestore.firestore().collection("members").document(uuid)
dbUsers.addSnapshotListener { snapshot, error in
if error != nil {
print(error ?? "Couldn't update text field TextUser according to database")
} else {
for document in (querySnapshot?.documents)! {
if let Name = document.data()["firstName"] as? String {
print(Name)
var post = NameData(firstname: "")
post.firstname = Name
self.userName.append(post)
self.nameLabel.text = self.name
}
}
print(self.userName)
}
}
}
解决方案
您的查询有几个错误。
- 这是对文档的查询,而不是集合,因此您将只能检索一个文档,即
uuid
您提供的文档。 - 查询 snapShot 的关闭开始的占位符是
snapshot
but infor loop
,您使用querysnapShot
的是未解析的标识符,并且querySnapshot.documents
在您的情况下不存在。
要从所有文档中检索所有数据,请将您的代码替换为以下内容
func getData() {
let uuid = UUID().uuidString
guard let currentUser = Auth.auth().currentUser else { return }
let dbUsers = Firestore.firestore().collection("members")
dbUsers.addSnapshotListener { snapshot, error in
if error != nil {
print(error ?? "Couldn't update text field TextUser according to database")
} else {
guard let Snapshot = snapshot else { return }
for document in (Snapshot.documents) {
if let Name = document.data()["firstName"] as? String {
print(Name)
var post = NameData(firstname: "")
post.firstname = Name
self.userName.append(post)
self.nameLabel.text = self.name
}
}
print(self.userName)
}
}
}
推荐阅读
- python-3.x - 如何从位于表中的目录中的跨度中获取文本?
- python - 获取 yaml 文件中的字典名称
- python - 如何使用 numpy 的 np.linalg.solve 来解决确定的最小二乘系统?
- css - 如何垂直对齐父 div 的 ap 子项,以便轻松地对子项进行文本对齐?
- pine-script - 如何在 pine 脚本中获取关闭数据子集的 stdev
- proxy - pyppeteer-install 在代理后面
- html - html页面Bootstrap顶部的白条
- pine-script - Pine Script Strategy - 当前蜡烛图的价格与前一根蜡烛图开盘时如何触发入场?
- haskell - "(<$>)" 在 Haskell 中有什么作用?
- gitlab-ci - GitLab Runner:限制允许的命令