println(NSString(数据:数据,编码:NSUTF8StringEncoding))中的这些(响应,数据,错误)在swift中意味着什么?

时间:2014-10-17 13:17:40

标签: ios iphone swift

任何人都可以告诉我下面的代码意味着什么。我想学习迅捷,我不明白 在线以下。

NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) 
{
    (response, data, error) in
    println(NSString(data: data, encoding: NSUTF8StringEncoding))
}

非常感谢你的时间。

2 个答案:

答案 0 :(得分:1)

这会异步启动网络request,一旦完成,它会执行println所收到的NSString的{​​{1}}表示,并以此为主队列(data)。

在解密它时,请考虑NSOperationQueue.mainQueue()函数的定义:

sendAsynchronousRequest

第三个参数是一个闭包。您的语法正在利用“尾随闭包”语法,该语法允许您在函数之后将该尾随闭包参数作为块提供。因此,class func sendAsynchronousRequest(_ request: NSURLRequest, queue queue: NSOperationQueue!, completionHandler handler: (NSURLResponse!, NSData!, NSError!) -> Void) 语法将这三个变量映射到response, data, error in参数中的NSURLResponseNSDataNSError参数。

请参阅 Swift编程语言中的Closures讨论。

答案 1 :(得分:0)

它以异步方式发送请求。当操作完成时,它调用closure({}部分)。 response参数是NSURLResponse!实例,表示服务器的响应。 data参数是NSData!实例,表示服务器返回的数据。 error参数是NSError!实例,表示此过程中可能发生的错误。