2015-01-30 3 views
6

У меня есть следующий код:session.dataTaskWithURL completionHandler никогда не называли

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

Функция completionHandler никогда не называется. Я попытался вызвать URL-адрес в своем браузере, он работает нормально. Я пробовал с другим URL-адресом, он все еще не работает. Я проверил, что мой симулятор ios может подключиться к Интернету.

Я не знаю, почему функция не вызывается, и поскольку у меня нет какой-либо ошибки, ее сложно отладить.

ответ

26

Задача никогда не завершается, потому что она никогда не запускается. Вы должны вручную запустить задачу данных с помощью метода 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 Нет проблем. IIRC, я сделал то же самое в первый раз, когда работал с NSURLSessionTask. Также стоит отметить, что вы можете 'suspend()' и 'cancel()' задачу также. –

+1

«Ответ» должен быть «ответом», а «println» должен быть «print». В противном случае этот код работает и полезен. –

Смежные вопросы