Подтвердить что ты не робот

NSURLSession dataTaskForRequest: завершение: непризнанный селектор, отправленный в экземпляр

При попытке создать свой собственный объект сеанса 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!)
}
4b9b3361

Ответ 1

Вы должны init URLSession с конфигурацией:

URLSession(configuration: .default)

или использовать общий сеанс

URLSession.shared

Ответ 2

В SWIFT 3.0:

        let task = URLSession.shared.dataTask(with: url)
        task.resume()

или

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

            //Your code
        })
        task.resume()

Ответ 3

Помимо общего сеанса NSURLSession необходимо инициализировать одним из этих двух методов

init(configuration configuration: NSURLSessionConfiguration)


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

Ответ 4

Сделайте инициализацию во время объявления: -

var session = URLSession(configuration: .default)