我当前正在尝试显示当前登录用户的名称,但似乎无法显示它。谁能看到代码有什么问题吗?
控制台正在打印每个用户的名字,因此我在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)
}
}
}
答案 0 :(得分:0)
错误消息告诉您您正在使用名为querySnapshot
的变量,但从未定义它。
我怀疑您是想说for document in (snapshot?.documents)!
。
但是,您的snapshot
不是QuerySnapshot对象,因为您仅在此处查询一个文档。因此,将没有documents属性,并且您将没有任何要实际迭代的内容。如果您只想查询单个文档,则应使用类似于documentation for reading a document中所看到的模式。
答案 1 :(得分:0)
您的查询有几个错误。
uuid
的文档。snapshot
,但在for 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)
}
}
}