【问题标题】:Multiple Firestore snapshots overwrite each other多个 Firestore 快照相互覆盖
【发布时间】:2019-05-13 20:32:32
【问题描述】:

我正在检查 firestore 数组是否包含来自另一个数组(不是 Firestore 数组)的字符串。然后我将数据放入字典中

 func loadData(){
        for i in 0..<testTable.count {

        let db = Firestore.firestore()

        db.collection("Ingredients").whereField("compName", arrayContains: testTable[i] ).getDocuments(){
            querySnapshot, error in
            if let error = error {
                print("\(error.localizedDescription)")
            }else if let querySnapshot = querySnapshot {
                if (querySnapshot.isEmpty == false){

                self.ingredientsArray = querySnapshot.documents.compactMap({Ingredients(dictionary: $0.data())})

                    print("\(self.ingredientsArray)")
                    DispatchQueue.main.async {
                        self.tableView.reloadData()

                    }
                }
            }

        }
    }
}

问题在于字典仅按预期保留最后一个快照中的数据。有没有办法保留所有快照中的所有数据?

【问题讨论】:

    标签: arrays swift google-cloud-firestore


    【解决方案1】:

    当您重新分配数组 self.ingredientsArray 时会发生这种情况,因此请替换它

     self.ingredientsArray = querySnapshot.documents.compactMap({Ingredients(dictionary: $0.data())})
    

    let res = querySnapshot.documents.compactMap({Ingredients(dictionary: $0.data())})
    self.ingredientsArray.append(contentsOf:res)
    

    【讨论】:

    • 天哪!我尝试追加了很多次,但我从没想过它会这么容易。非常感谢!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多