如何从 Swift 4.2 上的地图(对象)Cloud Firestore 文档中获取数据?



我正在使用Cloud Firestore作为我的iOS应用程序的数据库。

当文档包含地图(对象类型(时,我想查询数据时遇到问题。我无法通过简单的查询访问地图(nameOnId(的字段(例如:这里的名字(。

我的代码如下:

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 对象,但这并不能让我访问它们,我唯一能进入的是映射中的一组值,因此它只显示它们的键和值,例如:

{
firstName = "John";
middleName = "British";
middleName = "Citizen";
gender = "M";
DOB = "8 December 2000 at 00:00:00 UTC+11";
}

问题是如何使用查询访问单个值,例如"John"?我在云恢复中的数据结构

一种方法如下。此外,最好不要强制解开查询快照的包装(如果查询不存在,您的应用程序将崩溃!希望这有帮助!

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)
}
}
}
}

最新更新