I have spent the last two weeks working through some tutorials on treehouse to build a weather app. The app shows the weather for a set location (none of this fancy checking your location business), let’s you know the humidity, precipitation, the temperature, a summary, and shows a little icon for the current weather.
While some of the tutorials were review, many of the concepts are new. The app that I created how a very small amount of code, but it was interesting learning about many of the pre-created classes. The app uses JSON and the forcast.io api which pulls a large amount of weather data. Much of what I learned was what JSON is and how concurrency works. Also, since JSON pulls in data in what looks like a big mess and I don’t I can’t just show that in the app, I learned how to clean up and convert data to be usable.
Currently, my app isn’t the prettiest, or my own. I used the layout and icons provided by treehouse, but I would like to make a sassier version of this app now that I have it working. I would like to take it a step further and learn how you can add location awareness to the app, along with changing the look and feel.
When I updated Xcode to the most recent version I ran into some trouble. My app was throwing a few errors saying “anyobject is not convertible to nsdictionary.” Xcode then suggested adding an ‘!’ after the word ‘as’ to downcast it. Frankly, I don’t know what downcasting means so that was a little scary. After following the suggestion I was thrown about 9 more errors that looked (terrifying) and similar. I did a little research and tried to find the answer in the treehouse forum. Although someone was asking the same question I didn’t find any answer. I messed around (after making a copy of my file for fear or making things worse) and it turns out I needed to add an ‘!’ mark after all of the following messages. My guess is that they may not have shown up because it was a child of the other problem items. With that said, I successfully avoided a rage quit and now have my app happily on my phone.