在获取异步数据时,在获取所需的 results.Want 以在获取所有数据后重新加载 collectionView 之前,提前调用通知块
While fetching async data, notify block gets called early, before getting the required results.Want to reload collectionView after all data fetched
在 viewDidLoad() 中调用了以下方法并使用 Firestore 缓存获取数据然后附加到数组。获得完整响应后,我想重新加载我的 collectionView(我正在通过通知块执行此操作)。请让我知道我哪里错了,这是我的代码:
func getArchivedTasks(completion: @escaping ([ArchivedTasksModel],Bool) -> ()) {
var archTasks : [ArchivedTasksModel] = []
let viewModels = self.fetchTaskCardsFromDB()
let group = DispatchGroup()
for newItem in viewModels {
let newTask = ArchivedTasksModel()
newTask.taskCard = newItem
firestoreManager.getLastComment(taskId: newTask.taskCard?.id ?? "") { (commnt, res) in
group.enter()
newTask.comment = commnt
archTasks.append(newTask)
group.leave()
}
}
group.notify(queue: .main) {
completion(archTasks, true)
}
}
您必须enter
组在调用异步任务
之前
group.enter()
firestoreManager.getLastComment(taskId: newTask.taskCard?.id ?? "") { (commnt, res) in ...
在 viewDidLoad() 中调用了以下方法并使用 Firestore 缓存获取数据然后附加到数组。获得完整响应后,我想重新加载我的 collectionView(我正在通过通知块执行此操作)。请让我知道我哪里错了,这是我的代码:
func getArchivedTasks(completion: @escaping ([ArchivedTasksModel],Bool) -> ()) {
var archTasks : [ArchivedTasksModel] = []
let viewModels = self.fetchTaskCardsFromDB()
let group = DispatchGroup()
for newItem in viewModels {
let newTask = ArchivedTasksModel()
newTask.taskCard = newItem
firestoreManager.getLastComment(taskId: newTask.taskCard?.id ?? "") { (commnt, res) in
group.enter()
newTask.comment = commnt
archTasks.append(newTask)
group.leave()
}
}
group.notify(queue: .main) {
completion(archTasks, true)
}
}
您必须enter
组在调用异步任务
group.enter()
firestoreManager.getLastComment(taskId: newTask.taskCard?.id ?? "") { (commnt, res) in ...