我正在尝试使用 for in 循环函数获取一堆数据,但它不会以正确的顺序返回数据。看起来有些数据需要更长的时间才能获取,因此它们混合在一个数组中,我需要将所有数据按正确的顺序排列。所以,我使用了 DispatchGroup。但是,它不起作用。你能告诉我我在这里做错了什么吗?花了 10 个小时寻找解决方案……下面是我的代码。
@IBAction func parseXMLTapped(_ sender: Any) {
let codeArray = codes[0]
for code in codeArray {
self.fetchData(code)
}
dispatchGroup.notify(queue: .main) {
print(self.dataToAddArray)
print("Complete.")
}
}
private func fetchData(_ code: String) {
dispatchGroup.enter()
print("count: \(count)")
let dataParser = DataParser()
dataParser.parseData(url: url) { (dataItems) in
self.dataItems = dataItems
print("Index #\(self.count): \(self.dataItems)")
self.dataToAddArray.append(self.dataItems)
}
self.dispatchGroup.leave()
dispatchGroup.enter()
self.count += 1
dispatchGroup.leave()
}