Множественные снимки Firestore перезаписывают друг друга - PullRequest
0 голосов
/ 13 мая 2019

Я проверяю, содержат ли массивы 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()

                    }
                }
            }

        }
    }
}

Проблема в том, что словарь сохраняет данные только из последнего снимка, как и ожидалось. Есть ли способ сохранить все данные из всех снимков?

1 Ответ

0 голосов
/ 13 мая 2019

Это происходит при переназначении массива 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...