2015-10-02 6 views
33
gesendet

Beim Versuch, mein eigenes Session-Objekt NSURLSession() zu erstellen und eine URL anzufordern, erhalte ich eine nicht erkannte Selektor-Ausnahme, aber wenn ich die freigegebene Sitzung NSURLSession.sharedSession() verwende, funktioniert alles einwandfrei. Woher?NSURLSession dataTaskForRequest: Abschluss: unerkannter Selektor an Instanz

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!) 
} 
+1

Versuchen mit Konfiguration initialisiert. NSURLSession (Konfiguration: NSURLSessionConfiguration.defaultSessionConfiguration()) – MadNik

Antwort

76

Sie müssen init URLSession mit einer Konfiguration:

URLSession(configuration: .default) 

oder verwendet die gemeinsame Sitzung

URLSession.shared 
+3

Dank Es funktioniert, nahm ich an, dass es defaultSessionConfiguration standardmäßig verwendet, wenn ich jetzt nichts an den Konstruktor – Alex

+1

Für Swift 3 die Syntax übergeben: URLSession (Konfiguration: URLSessionConfiguration .Standard) –

1

Abgesehen von der gemeinsamen Sitzung NSURLSession muss mit einem dieser beiden Methoden initialisiert werden

init(configuration configuration: NSURLSessionConfiguration) 


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

In SWIFT 3.0 oder höher:

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

      //Your code 
     }).resume() 
-1

Sie die Initialisierung während Erklärung: -

var session = URLSession(configuration: .default)