Ios 如何从Swift 4.2上的地图(对象)云Firestore文档中获取数据?
我正在使用Cloud Firestore作为iOS应用程序的数据库 当文档包含映射(对象类型)时,我想查询数据时遇到问题。我不能通过简单的查询访问映射(nameoid)的字段(比如:这里的firstName) 我的代码如下:Ios 如何从Swift 4.2上的地图(对象)云Firestore文档中获取数据?,ios,swift,google-cloud-firestore,Ios,Swift,Google Cloud Firestore,我正在使用Cloud Firestore作为iOS应用程序的数据库 当文档包含映射(对象类型)时,我想查询数据时遇到问题。我不能通过简单的查询访问映射(nameoid)的字段(比如:这里的firstName) 我的代码如下: let db = Firestore.firestore() db.collection("userDetails").getDocuments() { (querySnapshot, err) in if let err = err {
let db = Firestore.firestore()
db.collection("userDetails").getDocuments() { (querySnapshot, err) in
if let err = err {
print("Error getting documents: \(err)")
} else {
for document in querySnapshot!.documents {
let results = document.data()
let result2 = results.compactMap({$0})
print("listedItems: \(document.documentID) => \(result2[0].value)") }}}
我在某个地方读到,为了能够访问map对象内的值,我需要展平map对象,但这并不能让我访问它们,我唯一能进入的是map内的一组值,因此它只显示它们的键和值,如:
{
firstName = "John";
middleName = "British";
middleName = "Citizen";
gender = "M";
DOB = "8 December 2000 at 00:00:00 UTC+11";
}
问题是如何使用查询访问“John”这样的单个值?一种方法如下。另外,最好不要强制展开querySnapshot(如果查询不存在,您的应用程序将崩溃!)。希望这有帮助
let db = Firestore.firestore()
db.collection("userDetails").getDocuments() { (querySnapshot, err) in
if let err = err {
print("Error getting documents: \(err)")
} else if let querySnapshot = querySnapshot {
for document in querySnapshot.documents {
let results = document.data()
if let idData = results["nameOnID"] as? [String: Any] {
let firstName = idData["firstName"] as? String ?? ""
print(firstName)
}
}
}
}