Получая идентификатор каждого документа в коллекции «events», где их значение EventStatus равно 0, и сохраняя их в строковом массиве (documentIds), я попытался выполнить код асинхронно с DispatchGroup (), поэтому при возврате «documentIds» , Я бы вернул непустое и полное значение.
Но когда я запускаю код, показанный ниже, он завис и фактически никогда не выполнялся в закрытии getDocuments {}.
Я попытался запустить getDocuments {} closure в DispatchQueue.global (). Async {}, но это также не сработало.
func someFunction() -> [String] {
var documentIds : [String]!
var dispatchGroup = DispatchGroup()
dispatchGroup.enter()
Firestore.firestore().collection("events").whereField("EventStatus", isEqualTo: 0).getDocuments { (snap, error) in
if let error = error {
print(error.localizedDescription)
return
}
guard let snap = snap else { return }
documentIds = snap.documents.map({ (document) -> String in
return document.documentID
})
dispatchGroup.leave()
}
dispatchGroup.wait()
return documentIds
}
Когда он завис, Firebase выдал эту ошибку в консоли отладки:
"Не удалось связаться с бэкэндом Cloud Firestore. Бэкэнд не ответил в течение 10 секунд.
Обычно это указывает на то, что ваше устройство в настоящее время не имеет исправного подключения к Интернету. Клиент будет работать в автономном режиме, пока не сможет успешно подключиться к бэкэнду. "
Кроме этого, нет ошибок или какой-либо другой обратной связи. Я что-то не так делаю с DispatchGroup () или Firestore?
Заранее спасибо за помощь!