似乎无法使用Xcode 7编译以下代码,我收到错误"无法使用类型的参数列表调用'dataTaskWithURL'
看起来completionHandler不再是可选的,无法弄清楚如何重写以下代码.任何帮助表示感谢,谢谢
let session = NSURLSession.sharedSession()
let url = NSURL(string: urlString)
var task = session.dataTaskWithURL(url!) {
(data, response, error) -> Void in
if error != nil {
print(error!.localizedDescription)
}
else {
var error: NSError?
var jsonData = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as! NSArray
// Do Stuff
}
}
task!.resume()
Run Code Online (Sandbox Code Playgroud)
编译器抛出以下错误:
/Users/Xcode/Desktop/fdsfsdfds/fdsfsdfds/AppDelegate.swift:24:28:无法使用类型'(NSURL,(_,_,_)throws - > Void)的参数列表调用'dataTaskWithURL '
在completionHandler中,你没有捕获JSONObjectWithData 可能最终抛出的异常.因此编译器推断您正在尝试传播异常,这将要求completionHandler具有以下签名:
(NSData?, NSURLResponse?, NSError?) throws -> Void
Run Code Online (Sandbox Code Playgroud)
这与实际的completionHandler dataTaskWithURL期望的错误相匹配.
要解决此问题,只需将您的调用包装NSJSONSerialization.JSONObjectWithData为do/catch语句,如下所示即可处理错误:
do {
var jsonData = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as! NSArray
// Do Stuff
} catch {
// handle error
}
Run Code Online (Sandbox Code Playgroud)
有关Swift2中有关错误处理的更多信息,请参阅此处提供的预发布文档
| 归档时间: |
|
| 查看次数: |
11084 次 |
| 最近记录: |