2015-01-30 19 views
6

ho il seguente codice:session.dataTaskWithURL completionHandler mai chiamato

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... 
}) 

La funzione completionHandler non viene mai chiamato. Ho provato a chiamare l'URL nel mio browser, funziona bene. Ho provato con un altro URL, non funziona ancora. Ho controllato che il mio simulatore iOS potesse connettersi a Internet, lo fa.

Non so perché la funzione non viene chiamata e poiché non ho alcun errore è difficile eseguire il debug.

risposta

26

L'attività non viene mai completata perché non viene mai avviata. È necessario avviare manualmente l'attività dati utilizzando il suo metodo resume().

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 Nessun problema. IIRC, ho fatto la stessa cosa la prima volta che ho lavorato con NSURLSessionTask. Vale anche la pena notare che è possibile anche "sospendere()" e "cancel()". –

+1

"reponse" dovrebbe essere "response" e "println" dovrebbe essere "print". Altrimenti questo codice funziona ed è utile. –

Problemi correlati