Прямо сейчас мой код получит асинхронные данные c и добавит их в словарь (мой UserModel)
UserAPI:
// Get all Users
func allUser (completion: @escaping (UserModel) -> Void) {
let db = Firestore.firestore()
let docRef = db.collection("users")
docRef.getDocuments { (querySnapshot, err) in
for document in querySnapshot!.documents {
let dic = document.data()
let user = UserModel(dictionary: dic)
completion(user)
}
}
}
В моем ViewController:
UserApi.shared.allUser { (user) in
self.users.append(user)
self.tableViewUsers.reloadData()
}
Я пытаюсь изменить свой подход и хочу загрузить ВСЕ данные, которые у меня есть в моем словаре. Я попробовал это с DispatchGroup (у меня нет опыта работы с DispatchGroups, но я его погуглил):
UserAPI: пробовал с Dispatch Group
// Get all Users
func allUser (completion: @escaping ([UserModel]) -> Void) {
let dispatchGroup = DispatchGroup()
var model = [UserModel]()
let db = Firestore.firestore()
let docRef = db.collection("users")
docRef.getDocuments { (querySnapshot, err) in
for document in querySnapshot!.documents {
dispatchGroup.enter()
print("disp enter")
let dic = document.data()
model.append(UserModel(dictionary: dic))
dispatchGroup.leave()
print("disp leave")
}
}
dispatchGroup.notify(queue: .main) {
completion(model)
print("completion")
}
}
С этим кодом сначала вызывается обработчик завершения, что явно не то, что мне нужно.
Что нужно исправить, чтобы загрузить все данные одновременно?