it-swarm.com.ru

Как использовать 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)!)
17
loopmasta

Как это:

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 */
})
41
Tomáš Linhart

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()
3
ColossalChris

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

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

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

3
Bluewings

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

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

Здесь я использовал Сокращенные имена аргументов. Я получаю доступ к response как $ 0 , data как $ 1 и error как $ 3 . Я нахожу этот синтаксис более легким для чтения и записи, если параметры не имеют большого числа, иначе код станет нечитаемым. 

0
Evol Gate