Как использовать NSURLConnection extensionHandler с swift
Кто-нибудь знает, как обработчики (блоки) работают в Swift? Я пытаюсь запустить этот код, но я не могу найти документацию о правильном синтаксисе для 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)!)
4 ответа
Как это:
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 */
})
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()
Вам нужно использовать этот код:
NSURLConnection.sendAsynchronousRequest(request,queue:queue,completionHandler:{response,data,error in /* code goes here */ })
Для получения дополнительной информации вы можете обратиться к этому учебному пособию или проверить ответы на вопросы Как разобрать файл JSON в swift?,
Правильный термин, который вы ищете здесь - Закрытие. Замыкания в Swift аналогичны блокам в C и Objective-C. В дополнение к ответу Томаша есть еще одна короткая версия для использования обработчика завершения здесь:
NSURLConnection.sendAsynchronousRequest(request, queue: queue, completionHandler: {$0; $1; $2})
Здесь я использовал сокращенные имена аргументов. Я получаю доступ к ответу как 0 $, данные как 1 $ и ошибка как 3 $. Я нахожу этот синтаксис более легким для чтения и записи, если параметры не имеют большого числа, иначе код станет нечитаемым.