2015-01-30 17 views
6

Ich habe den folgenden Code:session.dataTaskWithURL completionHandler genannt nie

let urlPath:String = apiURL + apiVersion + url + "?api_key=" + apiKey 
let url = NSURL(string: urlPath) 
let session = NSURLSession.sharedSession() 
println(url!) 
let task = session.dataTaskWithURL(url!, completionHandler: {(data, reponse, error) in 
    println("Task completed") 
    // rest of the function... 
}) 

Die completionHandler Funktion nie aufgerufen. Ich habe versucht, die URL in meinem Browser aufzurufen, es funktioniert gut. Ich habe versucht mit einer anderen URL, es funktioniert immer noch nicht. Ich habe überprüft, ob mein ios-Simulator eine Verbindung zum Internet herstellen kann.

Ich weiß nicht, warum die Funktion nicht aufgerufen wird und da ich keinen Fehler habe, ist es schwer zu debuggen.

Antwort

26

Die Aufgabe wird nie abgeschlossen, da sie nie gestartet wird. Sie müssen die Datenaufgabe manuell mit der Methode resume() starten.

let urlPath = apiURL + apiVersion + url + "?api_key=" + apiKey 
let url = NSURL(string: urlPath)! 
let session = NSURLSession.sharedSession() 

let task = session.dataTaskWithURL(url) { data, response, error in 
    print("Task completed") 
    // rest of the function... 
} 

task.resume() 
+0

@RomainBraun Kein Problem. IIRC, ich habe das gleiche gemacht, als ich das erste Mal mit NSURLSessionTask gearbeitet habe. Es ist auch erwähnenswert, dass Sie die Aufgabe auch "suspend"() und "cancel()" ausführen können. –

+1

"Antwort" sollte "Antwort" sein, und "println" sollte "drucken" sein. Ansonsten funktioniert dieser Code und ist hilfreich. –

Verwandte Themen