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

时间:2015-10-02 11:08:42

标签: ios swift nsurlsession unrecognized-selector

当尝试创建我自己的会话对象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!)
}

4 个答案:

答案 0 :(得分:100)

您必须init URLSession配置:

URLSession(configuration: .default)

或使用共享会话

URLSession.shared

答案 1 :(得分:5)

在SWIFT 3.0及更高版本中:

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

            //Your code
        }).resume()

答案 2 :(得分:2)

除了必须使用这两种方法之一

初始化共享会话NSURLSession之外
init(configuration configuration: NSURLSessionConfiguration)


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

答案 3 :(得分:1)

声明时进行初始化: -

var session = URLSession(configuration: .default)