在我的应用程序中,我有一个任务,用户将在其中输入from和to日期,url将获取数据。每个URL都将从服务器返回大型JSON
字符串。
当用户输入更大的日期间隔使服务器挂起时出现问题。在Android版本的应用程序中,我使用AsyncTask
来完成此操作。在那里,如果用户输入大日期间隔,我将请求拆分为多个。我使用for循环来获取每天的数据,并在每天完成任务后在onProgressUpdate
中发布进度。
在swift中,我还需要在for循环中使用多个数据任务并发布结果。
for i in 0 ..< dates.count {
// Getting response from server //
let response = getResponse(imei: sImei, date: dates[i])
parseResponse(response)
}
这就是我计划这样做的方式。但不知道如何实现这一点。
我看到了一些使用DispatchGroup
的建议。我对此并不熟悉。所以请指导我完成我的任务。
注意:在单个dataTask中提供大的日期间隔会阻塞我的服务器。因为,它是一个低端服务器。所以我必须查询各个日期的数据并将它们组合起来。
答案 0 :(得分:1)
使用递归:最初i = 0。
func callApi( i : Int){
if(dates.count > i){
// After Getting response from server //
self.callApi(i: i + 1)
}
}
答案 1 :(得分:0)
尝试创建一个循环来生成NSBlockOperation并使用addDependency进行上一个操作。
var prevOperation
for i in 0 ..< dates.count {
var operation = NSBlockOperation() {
// Getting response from server //
let response = getResponse(imei: sImei, date: dates[i])
parseResponse(response)
}
if(i>0) {
operation.addDependency(prevOperation)
}
prevOperation=operation;
}