ios - 在 for 循环中运行多个 URLRequest,先完成后执行

标签 ios swift swift3 urlrequest urlsession

在我的应用程序中,我有一个任务,用户将在其中输入起始日期和截止日期,然后 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 中提供较大的日期间隔会阻塞我的服务器。因为,它是一个低端服务器。所以我必须查询各个日期的数据并将它们组合起来。

最佳答案

使用递归:最初 i = 0 。

 func callApi( i : Int){

    if(dates.count > i){

   // After Getting response from server //

        self.callApi(i: i + 1)

 }

}

关于ios - 在 for 循环中运行多个 URLRequest,先完成后执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46175266/

相关文章:

ios - 为 cgsize 添加 uiColor (swift3)

ios - 将使用 Cocoapods 1.0.1 的 iOS 应用程序从 Swift 2.2 迁移到 3.0

ios - CollectionView 单元格具有固定宽度和动态高度

swift - 如何将 UIView 子类化并在其中添加另一个具有相同框架的 UIView

ios - 将发出数组的 SignalProducer 转换为发出原始数组所有元素的 SignalProducer

ios - UITableViewCell 背景隐藏 UI 元素

ios - Firebase 交易 - 这是正确的吗?

ios - 水平 UIScrollView - 创建增量卷尺

ios - UISlider 不更新 Swift 中的当前值

swift - 错误 : Type "DetailViewController" does not to protocol VKSdkDelegate