Вот очень упрощенная версия того, что вы пытаетесь сделать.Когда у вас есть данные, вы можете развернуть их по отдельности, как в примере ниже, или сопоставить их с пользовательскими объектами Swift.Но похоже, что ваш вопрос только о получении данных из Firestore, и вот как вы это сделаете:
featuredAttractionsQuery.addSnapshotListener { (snapshot, error) in
guard let snapshot = snapshot,
error == nil else { // error
if let error = error {
print(error.localizedDescription)
}
return // terminate query
}
guard !snapshot.isEmpty else { // no data
return // terminate query
}
// data fetched
for doc in snapshot.documents {
guard let caption = doc.get("caption") as? String,
let imagePath = doc.get("imagePath") as? String else {
continue // continue loop
}
// do something with the data
// perhaps take the image path and download the image (use a dispatch group if you do)
}
// whatever you do, when you're done, load your data source
}
Существует еще много чего, например, использование очередей отправки (для анализа вашегоданные в фоновом режиме) и группы рассылки (для обработки загрузок изображений, которые возвращаются асинхронно).