【发布时间】:2019-10-11 12:23:57
【问题描述】:
我有一个整数数组,我需要循环遍历它,然后发出网络请求以获取更多信息,并使用返回的信息填充我创建的新对象数组。
我希望返回的数据以数组提供它的相同顺序返回,但是它以不同的顺序返回并且我假设它可能与网络请求有关。
我是开发新手,所以答案可能很明显,但我真的陷入了下一步该怎么做的死胡同。
我尝试在每个循环上为网络请求添加延迟,我尝试在数组上调用 .sort() 以确保数组保持正确的顺序
var tacticalCoverIdArray = [Int]()
var savedTacticalCoverData = [Covers]()
for coverID in tacticalCoverIdArray {
performGetRequestForSpecificCovers(coverID: coverID, targetURL: targetURL, completion: { (data, HTTPSatusCode, error) -> Void in
if HTTPSatusCode == 200 && error == nil {
do {
if coverID != 0 {
let decodedJSON = try JSONDecoder().decode([Covers].self, from: data)
savedTacticalCoverData.append(decodedJSON[0])
} else {
let data = Covers(id: 0, game: 0, image_id: "")
savedTacticalCoverData.append(data)
}
DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(1000), execute: {
saveTacticalCoverData()
})
} catch let error {
print("Error decoding JSON: \(error)")
}
} else {
print("HTTP status code error: \(HTTPSatusCode)")
print("Error loading data: \(String(describing: error))")
}
})
}
当在 for 循环的第一个声明下放置一个 print 语句(即: print(coverID) 时,返回是我所期望的,它循环遍历每个整数,然后按顺序返回它们。
但是,一旦我将相同的打印语句放在“performGetRequestForSpecificCovers”方法下,coverID 数组的顺序就不是它应该的顺序,因此当我附加它们时,我得到的返回值顺序不正确到我的“savedTacticalCoverData”数组。
【问题讨论】:
标签: arrays swift sorting for-loop