【发布时间】:2017-06-09 13:02:22
【问题描述】:
我知道如何使用完成来发出同步请求。但我不知道如何在循环中发出同步请求。
这是我的代码:
var marks = [JSON]()
let vnCount = studentVnCodes.count
var i: Int = 0
marks = [JSON](repeating: JSON.null, count: vnCount)
for vn in studentVnCodes {
let url = "https://example.com/Student/Grade/GetFinalGrades?&vn=\(vn)&academic_year=All"
Alamofire.request(url).responseString { response in
var dataString: String = (response.result.value)!
dataString = cleanMarksJSON(string: dataString)
if let dict = convertToDictionary(text: dataString) {
marks[i] = (JSON(dict as Any))
i += 1
if (vnCount == marks.count) {
completionHandler(marks)
}
}
}
}
在这里,我尝试使用 vn 代码 (vnCount) 的数量发出 x 个请求。
问题是我在我的 JSON marks 数组中以错误的顺序获取了所有 JSON。当然是因为它在完成时会在数组中附加响应,并且不要等待前一个请求结束。
所以我尝试创建一个变量i 来强制函数以正确的顺序附加响应。那是行不通的。任何的想法?谢谢!
【问题讨论】:
标签: json swift request alamofire