Я прочитал несколько потоков по извлечению данных из Firestore, но я до сих пор не смог найти ответ и сделать эту работу -> заставил меня открыть новую тему.
Я пытаюсь получить количество документов во вложенной коллекции коллекции категорий для отображения на элементе detailTextlabel в Tableview. Поиск данных для категорий (документы в старшей коллекции) работает нормально, асинхронно получает данные и отображает их на уровне cellForRow.
Однако я пытаюсь получить его подколлекцию querySnapshot? .Count, которая также затем загружается в словарь по желанию, но я не могу заставить его загрузить данные за пределы замыкания (я могу ' заставить его работать с DispatchQueue.main.asynch). Со второго по последнее оператор печати (категории) работает нормально, тот, что под ним, показывает пустой dict.
Буду очень признателен за любой вклад.
Спасибо, Иво
Пожалуйста, найдите код здесь:
func loadCategories() {
if let currentUserEmail = Auth.auth().currentUser?.email {
let docRef = db.collection(currentUserEmail).order(by: "Name")
docRef.getDocuments() { (querySnapshot, err) in
if let err = err {
print("Error getting documents> \(err)")
} else {
for document in querySnapshot!.documents {
print(document.data())
self.categories.append(document.documentID)
self.db.collection(currentUserEmail).document(document.documentID)
.collection(document.documentID).whereField("Category", isEqualTo: document.documentID)
.getDocuments { (querySnapshot, error) in
if let error = error {
print("\(error)")
} else {
if let docCount = querySnapshot?.count {
self.categoryQuestionCountSub[document.documentID] = docCount
}
print("\(self.categoryQuestionCountSub) outside if let")
}
}
DispatchQueue.main.async {
self.tableView.reloadData()
}
}
print("\(self.categories) outside of Loop")
print("\(self.categoryQuestionCountSub) outside of Loop")
}
}
}
}