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 trial

iOS Build a Weather App with Swift (Retired) Pulling Data From the Web Making a Network Call

krittapak silanuwat
krittapak silanuwat
4,055 Points

Help me : weatherData is alway return null and my api.forecast.io limitation is full

I use Xcode version 6.1.1 (6A2008a) please help me fix weatherDat.

weatherDat is alway return null and my api.forecast.io limitation is full

my code as below detail

private let apiKey = "###############";

let baseURL = NSURL(string: "https://api.forecast.io/forecast/\(apiKey)/") let forecastURL = NSURL(string: "37.8267,-122.423", relativeToURL: baseURL)

let weatherData = NSData(contentsOfURL: forecastURL!, options: nil, error: nil)

1 Answer

The course was updated for 6.1 did you make the following changes?

Changes to Xcode

This course uses Xcode 6.0.1 and since its release, Xcode has been updated to Xcode 6.1. In the process some changes have been made to the APIs we work with in this course and in this particular video, the use of the NSData class initializer has been modified from

NSData.dataWithContentsOfURL(url: NSURL, options: NSDataReadingOptions, error: NSErrorPointer)

//to

NSData(contentsOfURL: NSURL, options: NSDataReadingOptions, error: NSErrorPointer)

Additionally, the NSURL constructor now returns an optional so when you pass the url to the NSData method, it needs to be unwrapped. In the video, where the code reads

let weatherData = NSData.dataWithContentsOfURL(forecastURL, options: nil, error: nil)

//replace with

let weatherData = NSData(contentsOfURL: forecastURL!, options: nil, error: nil)

Glad to help!