首先,其他问题与我的不同。从Firebase Firestore检索数据后,我正在尝试从Swift Xcode中的数据中获取单个值。相反,它给出了一个错误:
不能将类型为"字符串"的值下标为"字符串"的索引
ref.getDocument { (document, err) in
if let document = document, document.exists {
let dataDescription = document.data().map(String.init(describing: )) ?? "nil"
print ("Cached document data: (dataDescription)")
profilename?.text = dataDescription["name"] as! String
} else {
print ("Document doesn't exist")
}
}
错误发生在
profilename?.text = dataDescription["name"] as! String
线。
数据说明的打印是:
缓存的文档数据:["电子邮件":test2@gmail.com,"名称":Test2,"电话":408-222-2222]
谁能帮我解决这个问题?
让我通过一个例子来解决这个问题。假设您有一个带有用户集合的 FireStore,并且每个文档都有一个用户 uid 的文档 ID,并将其名称存储在字段中。它看起来像这样
users
uid_1
name: "Henry"
我们希望访问此用户的"名称"字段。下面是读取该文档、打印 uid 和名称的代码。
func readUsersName() {
let users = self.db.collection("users")
let thisUser = users.document("uid_1")
thisUser.getDocument { documentSnapshot, error in
if let error = error {
print(error.localizedDescription)
return
}
let docId = documentSnapshot?.documentID
let name = documentSnapshot?.get("name") as! String
print(docId, name)
}
}