swift - URL session 问题

标签 swift swift3 nsurlsession xcode8

我正在将我的项目转换为 Swift 3。

我在 Swift 2.2 中有这段代码:

lazy var downloadsSession: NSURLSession = {
    let configuration = NSURLSessionConfiguration.backgroundSessionConfigurationWithIdentifier("bgSessionConfiguration")
    let session = NSURLSession(configuration: configuration, delegate: self, delegateQueue: nil)

    return session
}()

并且代码被转换为 Swift 3:

lazy var downloadsSession: URLSession = {
    let configuration = URLSessionConfiguration.background(withIdentifier: "bgSessionConfiguration")
    let session = URLSession(session: configuration, downloadTask: self, didFinishDownloadingToURL: nil)

    return session
}()

但是这样的错误是:

"cannot convert value of type URLSessionConfiguration to expected argument type URLSession"

URLSession没有任何方法获取URLSessionConfiguration!

更新: 这是使用此功能时 swift3 自动校正的图片:

let session = URLSession(configuration: configuration, delegate: self, delegateQueue: nil)

enter image description here

如何修复此代码?

最佳答案

您正在寻找的初始化程序URLSession类似于init(configuration:delegate:delegateQueue:)。因此,像这样更改 session 的初始化。

let session = URLSession(configuration: configuration, delegate: self, delegateQueue: nil)

关于swift - URL session 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40201916/

相关文章:

swift - 将 SKShapeNode 与 UIBezierpath 结合使用时不会进行碰撞检测

swift - 以编程方式更新 UITextView 高度

arrays - 将函数放入元组会产生 "cannot convert value of type"错误

ios - Alamofire 仅在运行存档应用程序时崩溃

ios - Swift 3 - 动画

ios - 不确定为什么 NSURLSession 超时

ios - Swift:异步数据任务永远不会终止

ios - 在 nsoperation 内部使用 Runloop 执行异步任务

Swift 从 NSHTTPURLResponse header 获取下一页

ios - AlamofireObjectMapper 在 iOS 8 中不工作