我在控制器中有多个 api,成功响应后,我必须重新加载UITableView
.
现在我从两个 api 开始,第二个 api 依赖于第一个使用BlockOperation
和其中DispatchGroup
的 api。
首先在viewDidLoad
:
getDataFromAllApis {
self.tableView.reloadData()
}
然后我添加了方法:
func getDataFromAllApis(completion: @escaping (() -> Void)) {
let queue = OperationQueue()
let getFirstDataOperation = BlockOperation {
let group = DispatchGroup()
group.enter()
self.getFirstDataFromApi {
group.leave()
}
group.wait()
}
queue.addOperation(getFirstDataOperation)
let getSecondDataOperation = BlockOperation {
let group = DispatchGroup()
group.enter()
self.getSecondDataFromApi {
group.leave()
}
group.notify(queue: .main) {
completion()
}
}
queue.addOperation(getSecondDataOperation)
getSecondDataOperation.addDependency(getFirstDataOperation)
}
我在这里面临的问题是 getSecondDataOperation 首先执行并返回到 tableview 重新加载部分。
我在这里遗漏了什么还是可以有不同的方法?任何帮助将不胜感激。
我试过通过这篇文章: