Как использовать NSURLConnection completeHandler с быстрым

Кто-нибудь знает, как работают обработчики (блоки)? Я пытаюсь запустить этот код, но я не могу найти документацию о правильном синтаксисе для completeHandler.

let url:NSURL = NSURL(string:"some url")
let request:NSURLRequest = NSURLRequest(URL:url)
let queue:NSOperationQueue = NSOperationQueue()

NSURLConnection.sendAsynchronousRequest(request:request, queue:queue, completionHandler handler:((NSURLResponse!, NSData!, NSError!) -> Void)!)

Ответы

Ответ 1

Вот так:

NSURLConnection.sendAsynchronousRequest(request, queue: queue, completionHandler:{ response, data, error in /* Your code */ })

Или более подробный вариант.

NSURLConnection.sendAsynchronousRequest(request, queue: queue, completionHandler:{ (response: NSURLResponse!, data: NSData!, error: NSError!) -> Void in
    /* Your code */
})

Ответ 2

Вам нужно использовать этот код:

NSURLConnection.sendAsynchronousRequest(request,queue:queue,completionHandler:{response,data,error in /* code goes here */ })

Для получения дополнительной информации вы можете обратиться к этому учебнику или или проверить ответы на Как разбирать JSON файл в swift?.

Ответ 3

sendAsynchronousRequest устарел в новых версиях Swift. Переместитесь на dataTaskWithRequest, к счастью, он используется практически так же.

let request:NSURLRequest = NSURLRequest(URL:NSURL(string:"http://YOUR_DESIRED_URL.com")!)
let config = NSURLSessionConfiguration.defaultSessionConfiguration()
let session = NSURLSession(configuration: config)

let task = session.dataTaskWithRequest(request, completionHandler: {(data, response, error) in

});

task.resume()

Ответ 4

Правильный термин, который вы ищете здесь, Закрытие. Закрытия в Swift аналогичны блокам в C и Objective-C. В дополнение к ответу Томаша есть еще одна короткая версия, чтобы использовать обработчик завершения здесь:

NSURLConnection.sendAsynchronousRequest(request, queue: queue, completionHandler: {$0; $1; $2})

Здесь я использовал Shorthand Argument Names. Я получаю ответ как $0, данные как $1 и ошибка как $3. Я считаю, что этот синтаксис легче читать и писать, если параметры не являются большими, иначе код станет нечитаемым.