在调用函数之前,等待for循环中的许多Web请求返回

时间:2015-12-17 01:27:50

标签: ios swift for-loop networking

我有一个for-in循环,它为循环中的每个项目发出网络请求。我已经完成了挖掘工作并且尚未找到可行的解决方案。在执行下一个函数之前,我怎么能等到所有请求都被返回?

我不能在for循环之后调用该函数,因为在调用函数之前不会返回任何内容。我已经尝试了dispatch_group_enter/leave()但是在每次循环后都会调用它。我需要遍历整个循环,等待每个网络返回,然后触发下一个函数。

GCD仍然是我最好的选择吗?

for item in array {

      let task = NSURLSession.sharedSession().dataTaskWithURL(url) { (data, response, error) -> Void in

           if error != nil {

                   print(error)

           } else {

                   if let result = (try? NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers)) as? NSArray {

                          if error == nil {

                                 print(result)

                          }
                  }
           }
     }
     task.resume()
}

// Call function here once I've printed every `result`.

1 个答案:

答案 0 :(得分:2)

不是理想的解决方案,但您是否考虑过在每个块中调用另一个函数,并跟踪已完成的下载次数?因此,如果每次下载完成后调用以下函数,例如:

ServletContext