如何在 Swift 中返回给定键的映射数据值?

1 dictionary firebase swift google-cloud-firestore

我正在创建一个 Firebase 查询,该查询返回一组我要转换为地图的数据。然后,我尝试访问键“postScore”处的值,但收到错误“无法使用“String”类型的索引为“[String]”类型的值添加下标。我也尝试过使用“value(forKeyPath: )”但无济于事。

func getAccountScore(){
        let postsRef = db.collection("posts")
        let query = postsRef.whereField("UID", isEqualTo: Auth.auth().currentUser?.uid)
        query.getDocuments(){ (querySnapshot, err) in
            if let err = err {
                print("Error getting documents: \(err)")
            } else {
                self.numberOfPosts = querySnapshot!.count
                print("number of posts: \(self.numberOfPosts)")
                for document in querySnapshot!.documents {
                    let dataDescription = document.data().map(String.init(describing:)).sorted(by: >)

                    print(dataDescription["postScore"])
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

Kam*_*ran 5

document.data()Dictionary根据文档,返回类型是可选的,因此您应该得到postScore如下所示的值,

let postScore = document.data()?["postScore"]
print(postScore)
Run Code Online (Sandbox Code Playgroud)

目前,您正在尝试将Arrayof String(您使用创建的.map{})视为字典来获取postScore值,但编译器不允许将Array其用作Dictionary.