URLSession问题

时间:2016-10-23 10:29:41

标签: 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
}()

但是这样的错误是:

  

"无法将URLSessionConfiguration类型的值转换为预期的参数类型URLSession"

URLSession没有任何方法可以获得URLSessionConfiguration

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

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

enter image description here

如何修复此代码?

2 个答案:

答案 0 :(得分:3)

您要查找的URLSession初始值设定项与init(configuration:delegate:delegateQueue:)类似。所以改变你的会话初始化。

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

答案 1 :(得分:1)

我认为您正在实现URLSessionDownloadDelegate方法,并且编译器对此功能感到困惑。看看吧!