iOS 9 中弃用 sendAsynchronousRequest 并在 iOS 10 中将其与 OperationQueue 一起使用

sendAsynchronousRequest deprecation in iOS 9 and using it in iOS 10 with OperationQueue

我正在尝试下载 1000 多张图片,总大小为 50MB。 我的 iOS 9 代码是:

    let operationQueue = OperationQueue.main
    operationQueue.maxConcurrentOperationCount = 1
    operationQueue.qualityOfService = .background
    for url in urls{
      let urlRequest = URLRequest(url: URL(string: url)!)
      NSURLConnection.sendAsynchronousRequest(urlRequest, queue: operationQueue, completionHandler: { (response, data, error) in
          //image
      })
}

所以我想一张一张下载图片,但是现在在iOS 10 sendAsynchronousRequest 已被弃用,我不知道如何将图片添加到队列中。我在 iOS 10 中看到了关于使用 sendAsynchronousRequest 的不同问题,但我没有找到如何将其添加到队列中。大多数答案是使用 URLSession.shared.dataTask(...) ,但是您不能将任务添加到队列中。关于如何将所有请求添加到 operationQueue 的任何建议?

URLSession才是正确的做法。

NSURLConnection 中的请求是在队列中分派的不同,URLSession 本身是在队列中分派的。

使用

创建自定义会话
init(configuration: URLSessionConfiguration, 
            delegate: URLSessionDelegate?, 
            delegateQueue queue: OperationQueue?)

值得一读 documentation