Я пытаюсь запросить базу данных моего пожарного хранилища и подсчитать, сколько раз для поля установлено предопределенное перечисление.Однако, когда я запускаю его или выполняю через него с точкой останова, закрытие никогда не возвращается, и мой dispatch.wait () зависает навсегда.Я не уверен, почему запрос не работает, так как коллекция существует, и у меня есть тестовые данные для этого запроса.Я также могу читать и писать в коллекцию оценок, так что я не думаю, что это проблема с разрешениями.
Я ожидаю, по крайней мере, получить ошибку, если запрос не выполнен, но он просто пропускает его изависает в ожидании, пока я не остановлю запуск.
let user = self.user
let evalRef = self.db.evaluations(forUser: user.userID)
let dispatchGroup = DispatchGroup()
for keys in self.stat.enumCases.keys {
dispatchGroup.enter()
evalRef.whereField(self.stat.queryName, isEqualTo: keys).getDocuments { (querySnapshot, err) in
if let err = err {
print(err.localizedDescription)
dispatchGroup.leave()
return
}
guard let querySnapshot = querySnapshot else {
//error
dispatchGroup.leave()
return
}
guard let enumCaseName = self.stat.enumCases[keys] else {
//error
dispatchGroup.leave()
return
}
if querySnapshot.count > 0 {
self.stat.primaryStatStruct[keys] = primaryStatForEachCase(enumCaseTitle: enumCaseName, enumCaseValue: Double(querySnapshot.count))
dispatchGroup.leave()
} else {
self.stat.primaryStatStruct[keys] = primaryStatForEachCase(enumCaseTitle: enumCaseName, enumCaseValue: 0.0)
dispatchGroup.leave()
}
}
}
dispatchGroup.wait()
Вот другие фрагменты, чтобы дать лучшую картинку:
/// Returns a reference to the user evaluation collection.
func evaluations(forUser userID: String) -> CollectionReference {
return self.collection("users/\(userID)/evaluations")
}
печать ключей и self.stat.queryName
сборник оценок с документами
ключи соответствия данных документа и queryName
Любая помощь будет принята с благодарностью.