web-dev-qa-db-fra.com

NSURLSession dataTaskForRequest: achèvement: sélecteur non reconnu envoyé à l'instance

Lorsque j'essaie de créer mon propre objet de session NSURLSession() et de demander une URL, j'obtiens une exception de sélecteur non reconnue, mais lorsque j'utilise la session partagée NSURLSession.sharedSession() tout fonctionne bien. Comment venir?

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!)
}
47
Alexey

Vous devez init URLSession avec une configuration:

URLSession(configuration: .default)

ou utiliser une session partagée

URLSession.shared
104
Arsen

Dans Swift 3.0 et plus:

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

            //Your code
        }).resume()
5
pierre23

Mis à part la session partagée, NSURLSession doit être initialisé avec l'une de ces deux méthodes

init(configuration configuration: NSURLSessionConfiguration)


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

Faire l'initialisation lors de la déclaration: -

var session = URLSession(configuration: .default)
1
Jay Mehta