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

问题描述 投票:42回答:4

当我尝试创建自己的会话对象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!)
}
ios swift nsurlsession unrecognized-selector
4个回答
97
投票

你需要init URLSession配置:

URLSession(configuration: .default)

或使用共享会话

URLSession.shared

5
投票

在SWIFT 3.0及更高版本中:

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

            //Your code
        }).resume()

2
投票

除了共享会话之外,NSURLSession必须使用这两种方法之一进行初始化

init(configuration configuration: NSURLSessionConfiguration)


init(configuration configuration: NSURLSessionConfiguration,
               delegate delegate: NSURLSessionDelegate?,
             delegateQueue queue: NSOperationQueue?)

1
投票

声明时进行初始化: -

var session = URLSession(configuration: .default)
© www.soinside.com 2019 - 2024. All rights reserved.