我有一个JSON,通过它我可以得到板子列表。可以通过self.jsonGame.boards访问。现在我必须调用所有这些电路板并显示它的内容。DispatchQueue.main.async的多个请求在swift中不能正确执行3
但是电路板并没有被一致地调用。他们有时只会出现。
func fetchBoard(){
let repo = GameRepository()
let prefs = UserDefaults.standard
if self.jsonGame.boards.count > 0 {
self.sortedBoardArr.reserveCapacity(self.BoardArr.count)
for board in self.jsonGame.boards{
DispatchQueue.main.async
{
repo.GetBoardInfo(gameID: self.jsonGame.Id, boardID: board , completion : {(response , errorCode) -> Void in
if errorCode == ErrorCode.NoError{
DispatchQueue.main.sync {
self.BoardArr.append(response)
self.sortArr()
self.collectionView.reloadData()
}
}
})
}
}
}
}
func sortArr(){
if self.jsonGame.boards.count == self.BoardArr.count{
for board in self.jsonGame.boards{
for boardarr in self.BoardArr{
if boardarr.id == board{
self.sortedBoardArr.append(boardarr)
}
}
}
}
}
如果任何人都可以帮助我弄清楚如何确保电路板被调用的一致性。
我很喜欢异步处理。抱歉,添麻烦了。
你试图使用main请求GetBoardInfo。为什么不背景或其他线程? – iWheelBuy
因为我无法找到后台任务已完成。所以认为保持简单,并在主要的异步本身执行。 – Prateekro