0

在我的应用程序中,我有一个任务,用户将输入从和到日期,并且 url 将获取数据。JSON每个 URL 都会从服务器返回大字符串。

当用户输入较大的日期间隔导致服务器挂起时,就会出现问题。在应用程序的 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 中提供较大的日期间隔会阻塞我的服务器。因为,它是一个低端服务器。所以我必须查询各个日期的数据并将它们组合起来。

4

2 回答 2

1

使用递归:最初 i = 0 。

 func callApi( i : Int){

    if(dates.count > i){

   // After Getting response from server //

        self.callApi(i: i + 1)

 }

}
于 2017-09-12T11:48:30.973 回答
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;
}
于 2017-09-12T12:53:19.243 回答