Swift中的NSURL问题

我正在构build一个天气应用程序,这整个代码块是一个错误。 我尝试了几乎所有的东西。

这是代码:

func getCurrentWeatherData() -> Void { let baseURL = NSURL(string: "https://api.forecast.io/forecast/\(apiKey)/") let forecastURL = NSURL(string: "37.8267,-122.423", relativeToURL: baseURL) let sharedSession = NSURLSession.sharedSession() let downloadTask: NSURLSessionDownloadTask = sharedSession.downloadTaskWithURL(forecastURL!, completionHandler: { (location: NSURL!, response: NSURLResponse!, error: NSError!) -> Void in if (error == nil){ let dataObject = NSData(contentsOfURL: location) let weatherDictionary: NSDictionary = NSJSONSerialization.JSONObjectWithData(dataObject, options: nil, error: nil) as NSDictionary let currentWeather = Weather(weatherDictionary: weatherDictionary) dispatch_async(dispatch_get_main_queue(), { () -> Void in self.currentTemperature.text = "\(currentWeather.temperature)" self.iconView.image = currentWeather.icon! let formatter = NSDateFormatter() formatter.timeStyle = .ShortStyle self.currentTime.text = formatter.stringFromDate(NSDate()) self.humidity.text = "\(Int(currentWeather.humidity * 100))%" self.rain.text = "\(Int(currentWeather.precipProbability))%" self.summary.text = "\(currentWeather.summary)" self.refreshActivityIndicator.stopAnimating() self.refreshActivityIndicator.hidden = true self.refreshButton.hidden = false }) } else { let networkIssueController = UIAlertController(title: "Error", message: "Unable to load data. Connectivity error!", preferredStyle: .Alert) let okButton = UIAlertAction(title: "OK", style: .Default, handler: nil) networkIssueController.addAction(okButton) let cancelButton = UIAlertAction(title: "Cancel", style: .Cancel, handler: nil) networkIssueController.addAction(cancelButton) self.presentViewController(networkIssueController, animated: true, completion: nil) dispatch_async(dispatch_get_main_queue(), { () -> Void in self.refreshActivityIndicator.stopAnimating() self.refreshActivityIndicator.hidden = true self.refreshButton.hidden = false }) } }) } 

这是错误的:

“/Users/Ethan/Downloads/Weather-master/Weather/ViewController.swift:39:117:'(NSURL!,NSURLResponse !, NSError!) – > Void'不能转换为'(NSURL ?, NSURLResponse ?, NSError ?) – >空白'“

编辑

解决上面的错误之一…现在的代码是︰let weatherDictionary:NSDictionary = NSJSONSerialization.JSONObjectWithData(dataObject,options:nil,error:nil)as NSDictionary

错误是

/Users/Ethan/Downloads/Weather-master/Weather/ViewController.swift:42:85:调用额外的参数“错误”

更改

  location: NSURL!, response: NSURLResponse!, error: NSError! 

  location: NSURL?, response: NSURLResponse?, error: NSError? 

如果你正在使用swift2

  do { let jsonResult = try NSJSONSerialization.JSONObjectWithData(dataObject, options: NSJSONReadingOptions.MutableContainers) as? NSDictionary } catch let error as NSError { print(error) }