在调用中额外的参数“错误”。 Swift 2.0中的编译错误

我目前正试图通过这个示例应用程序了解Swift 2.0和OAuth集成: https : //github.com/soundcloud/iOSOAuthDemo

下面的代码片段导致我的问题,并导致应用程序编译失败。

private func requestMe(token: String) { let url = NSURL(string: "https://api.soundcloud.com/me.json?oauth_token=\(token)")! let request = NSURLRequest(URL: url) let session = NSURLSession(configuration: NSURLSessionConfiguration.defaultSessionConfiguration(), delegate: nil, delegateQueue: NSOperationQueue.mainQueue()) let dataTask = session.dataTaskWithURL(url) { (data, response, error) -> Void in if let jsonOutput = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: nil) as? [String:AnyObject] { self.displayMe(jsonOutput) } } dataTask.resume() } 

但是编译我的error handling看起来好像它已经在此版本的Swift(2.0)中更改并导致以下错误:

在编译调用中额外的参数“错误”。

我在这个问题上审查了以下堆栈发布: Swift:在调用中的额外参数“错误”

并调整我的代码来尝试纠正error handling,如下所示:

 let dataTask = session.dataTaskWithURL(url) { (data, response, error) -> Void in if let jsonOutput = NSJSONSerialization.JSONObjectWithData(data, options: nil) as? [String:AnyObject] { self.displayMe(jsonOutput) } } catch let error as NSError { print(error);} dataTask.resume() } 

我也试过改变:

 (data, options: nil, error: nil) 

 (data:NSData?, error:NSError?) 

但是这些都不能解决问题。 有人可以指导我,这个error handling可能是一个愚蠢的错误。

提前致谢!,

你的代码有几个问题:你添加了catch但忘记了do然后try 。 你也不能通过nil作为选项参数NSJSONSerialization,你必须安全地解包data可选。

这是一个固定的版本:

 let dataTask = session.dataTaskWithURL(url) { (data, response, error) -> Void in do { if let myData = data, let jsonOutput = try NSJSONSerialization.JSONObjectWithData(myData, options: []) as? [String:AnyObject] { self.displayMe(jsonOutput) } } catch let error as NSError { print(error) } } dataTask.resume()