Как использовать 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. Я считаю, что этот синтаксис легче читать и писать, если параметры не являются большими, иначе код станет нечитаемым.