NSURLSession dataTaskForRequest:完成:发送到实例的无法识别的选择器

Ale*_*xey 48 ios unrecognized-selector nsurlsession swift

当我尝试创建自己的会话对象NSURLSession()并请求一个url时,我得到一个无法识别的选择器异常,但是当我使用共享会话时,NSURLSession.sharedSession()一切正常.怎么会?

var url = NSURL(string: "http:/www.google.com")
if url != nil {
    //throws unrecognized selector when dataTaskWithURL is called
    let session=NSURLSession()
    session.dataTaskWithURL(url!)

   //works
    let sharedSession=NSURLSession.sharedSession()
    sharedSession.dataTaskWithURL(url!)
}
Run Code Online (Sandbox Code Playgroud)

Ars*_*sen 105

你必须使用配置初始化URLSession:

URLSession(configuration: .default)
Run Code Online (Sandbox Code Playgroud)

或使用共享会话

URLSession.shared
Run Code Online (Sandbox Code Playgroud)

  • 谢谢它的工作原理,我认为如果我没有向构造函数传递任何内容,它默认使用了defaultSessionConfiguration (4认同)

pie*_*e23 5

在SWIFT 3.0及更高版本中:

        URLSession.shared.dataTask(with: url, completionHandler:
        {
            (data, response, error) in

            //Your code
        }).resume()
Run Code Online (Sandbox Code Playgroud)