Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialJake Johnson
6,839 PointsThis code doesn't compile with the latest iteration of Swift.
This code fails at the currentWeatherDictionary step. Error reads as '(StringLiteralConvertible) -> $T2 is not identical to 'NSDictionary'.
3 Answers
Rhian Thomas
7,489 PointsThe teacher download code will not compile, you are correct. If you go through some of the forum posts related to earlier steps, you will see that some students have pointed out changes needed.
Try replacing the viewDidLoad() function in the ViewController with the following. This takes care of unwrapping some optionals. I would not be surprised if that takes care of the error.
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let baseURL = NSURL(string: "https://api.forecast.io/forecast/\(apiKey)/")
if 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) {
if let dataObject = NSData(contentsOfURL: location) {
let weatherDictionary: NSDictionary = NSJSONSerialization.JSONObjectWithData(dataObject, options: nil, error: nil) as NSDictionary
println(weatherDictionary)
}
}
})
downloadTask.resume()
}
}
sheng tan
Courses Plus Student 621 PointsTry to change options: nil in
NSJSONSerialization.JSONObjectWithData(dataObject, options: nil, error: nil) as NSDictionary
to options: NSJSONReadingOptions(0), it works for me.
Sigurdur Haraldsson
1,793 PointsHaving the same problem. Copied the code above and still doesn't fix it."'(StringLiteralConvertible) -> $T2 is not identical to 'NSDictionary'." Always comes up, can anyone help me ?