Как я могу получить документы на документы из магазина ?
Теперь я получаю несколько идентификаторов документов из бэкэнда , и мне нужно отобразить полученные идентификаторы документов в tableview .
В пожарном магазине У меня есть идентификаторы :
xNlguCptKllobZ9XD5m1
uKDbeWxn9llz52WbWj37
82s6W3so0RAKPZFzGyl6
EF6jhVgDr52MhOILAAwf
FXtsMKOTvlVhJjVCBFj8
JtThFuT4qoK4TWJGtr3n
TL1fOBgIlX5C7qcSShGu
UkZq3Uul5etclKepRjJF
aGzLEsEGjNA9nwc4VudD
dZp0qITGVlYUCFw0dS8C
n0zizZzw7WTLpXxcZNC6
И, например, мой бэкэнд нашел только этот идентификаторы :
JtThFuT4qoK4TWJGtr3n
TL1fOBgIlX5C7qcSShGu
UkZq3Uul5etclKepRjJF
или
aGzLEsEGjNA9nwc4VudD
dZp0qITGVlYUCFw0dS8C
n0zizZzw7WTLpXxcZNC6
Мне нужно отобразить только эти три идентификатора в tableview . (Но на самом деле бэкенд возвращает мне 100+ идентификаторов, а ниже вы можете увидеть безумную сортировку этих идентификаторов)
Backend добавить этот идентификатор во временный массив var tempIds: [String] = []
Так как мне получить из firestore только эти идентификаторы и отобразить их в tableview ?
Я использую этот код:
fileprivate func query(ids: String) {
Firestore.firestore().collection(...).document(ids).getDocument{ (document, error) in
if let doc = document, doc.exists {
if let newModel = Halls(dictionary: doc.data()!, id: doc.documentID) {
self.halls.append(newModel)
self.halls.shuffle()
self.halls.sort(by: { $0.priority > $1.priority })
self.tableView.reloadData()
} else {
fatalError("Fatal error")
}
} else {
return
}
}
}
Мне нужно обрабатывать идентификаторы из бэкэнда в фоновом режиме, а после обработки необходимо отображать обработанные идентификаторы в таблице без неистовой сортировки.
Может понадобиться использовать addSnapshotListened
, но я не понимаю, как.
ОБНОВЛЕННЫЙ КОД:
for id in idsList {
dispatchGroup.enter()
Firestore.firestore().collection(...).document(id).getDocument{ (document, error) in
if let doc = document, doc.exists {
if let newHallModel = Halls(dictionary: doc.data()!, id: doc.documentID) {
self.tempHalls.append(newHallModel)
dispatchGroup.leave()
} else {
fatalError("Fatal error")
}
} else {
print("Document does not exist")
MBProgressHUD.hide(for: self.view, animated: true)
return
}
}
}
dispatchGroup.notify(queue: .global(qos: .default), execute: {
self.halls = self.tempHalls
DispatchQueue.main.async {
MBProgressHUD.hide(for: self.view, animated: true)
self.tableView.reloadData()
}
})