【发布时间】:2015-06-28 06:20:38
【问题描述】:
我正在阅读在 Swift 中解析 REST API 调用的不同方法并遇到以下问题:
var url : String = "http://google.com?test=toto&test2=titi"
var request : NSMutableURLRequest = NSMutableURLRequest()
request.URL = NSURL(string: url)
request.HTTPMethod = "GET"
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue(), completionHandler:{ (response:NSURLResponse!, data: NSData!, error: NSError!) -> Void in
var error: AutoreleasingUnsafeMutablePointer<NSError?> = nil
let jsonResult: NSDictionary! = NSJSONSerialization.JSONObjectWithData(data, options:NSJSONReadingOptions.MutableContainers, error: error) as? NSDictionary
if (jsonResult != nil) {
// process jsonResult
} else {
// couldn't load JSON, look at error
}
})
对我来说没有意义的一行是var error: AutoreleasingUnsafeMutablePointer<NSError?> = nil。我们已经捕获了我们的NSError 参数并将其存储在一个名为error 的变量中,现在我们要覆盖它并在闭包的第一行中使其为零?或者,如果 Swift 以某种方式将错误从 NSError! 类型向下转换为 AutoreleasingUnsafeMutablePointer<NSError?>,那么有人可以解释这是怎么发生的吗?
谢谢!
【问题讨论】:
标签: ios objective-c xcode swift closures