Create a Weather App

Learn how to build your own weather app
3.6 (9 ratings)
Instead of using a simple lifetime average, Udemy calculates a
course's star rating by considering a number of different factors
such as the number of ratings, the age of ratings, and the
likelihood of fraudulent ratings.
1,193 students enrolled
Take This Course
  • Lectures 27
  • Length 3 hours
  • Skill Level All Levels
  • Languages English
  • Includes Lifetime access
    30 day money back guarantee!
    Available on iOS and Android
    Certificate of Completion
Wishlisted Wishlist

How taking a course works


Find online courses made by experts from around the world.


Take your courses with you and learn anywhere, anytime.


Learn and practice real-world skills and achieve your goals.

About This Course

Published 7/2015 English

Course Description

A lot of the popular weather apps are either full of ads, require too many permissions, or include features that most of us never use. Wouldn't it be great if you could build your own weather app from scratch? Well, in this course you will learn how to do just that!

In this course you'll learn foundational concepts of iOS development while you build a weather app that displays current weather data.

This course will cover building a basic iOS weather application from start to finish. You'll learn how to build a weather app to broaden your understanding of Swift and Cocoa Touch frameworks. We will start by learning foundational concepts like networking and concurrency while building on our existing knowledge of data modeling, Auto Layout and more.

By the end of this course you will have a working weather app. This course will not only teach how to build a weather app, but it will give you a solid foundation in building apps and you will be well on your way to becoming an iOS developer.

What are the requirements?

  • basic knowledge of programming

What am I going to get from this course?

  • Learn by example by walking you through real live projects step by step
  • Learn the fundamentals of Swift
  • Learn to create an app by example by walking you through real live project step by step

Who is the target audience?

  • Anyone who wants to make apps
  • Anyone who want to learn the basics of coding

What you get with this course?

Not for you? No problem.
30 day money back guarantee.

Forever yours.
Lifetime access.

Learn on the go.
Desktop, iOS and Android.

Get rewarded.
Certificate of completion.


Section 1: Getting Started
The Intro
Section 2: Simple Data Structures
Hardcoding data in the app is a very limited approach and it's time we started pulling in data from external sources. In this video, we look at what a plist is, how we can create them and how we use the data in our apps.
To use the information from the plist in our app, we need to create a model. In this video, we go over creating the CurrentWeather struct and setting it up for use.
We have a plist and we have a struct that's built to use data from the plist but no way to connect the two. In this video we look at how we can use the NSBundle class to load in files stored in the app's directory.

In iOS 8, Apple introduced a new feature called Size Classes which along with Auto Layout, allows us to design apps for all screen sizes and orientations. Let's take a look at what size classes are and how we can use them in our apps.

Exploring Size Classes
Bootstrapping the UI
Section 3: Interacting With Data From the Web
We're going to use the weather data from by means of their API or Application Programming Interface. In this video, we go over what an API is and how we use it.
How We Get Data From the Web
To make an HTTP request, the first thing we need is a URL. In this video, we learn about the NSURL class reference and how we can construct our URLs.
Fetching Data
Our network call returns some data in a format known as JSON. Let's take a look at what JSON is and why we're using this particular format.
We often do multiple things at once on our mobile devices but take for granted the computing complexity involved. In this video, we'll start with a history lesson and look at what it means to execute multiple blocks of code simultaneously.
Now that we know the importance of concurrency and how our code might cause problems, let's sort things out. In this video, we're going to use the NSURLSession collection to write concurrent networking code that should steer us clear of any problems.
Section 4: Managing Complexity

In separating our app logic into different structs and classes we're going to make our code more reusable and a lot more readable. Let's start with a class to manage network operations.


The main job of the NetworkOperation class will be to download some JSON from a given URL. Since a network operation is an asynchronous one, we need to implement our method with a callback mechanism using a closure.

With two pieces of the puzzle complete, NetworkOperation and CurrentWeather, all we need is a third struct to coordinate between the two.
The three main components of our app are set up but we're not done yet. The CurrentWeather struct is still set up to mostly handle data from the plist. With a few tweaks we can adapt it to handle data from the web.
We've talked about performing tasks in the background but never about how we can return to the main thread when these tasks are done. In this video, we take a look at iOS' preferred way of managing concurrent tasks using Grand Central Dispatch.
Section 5: Weather Icons
Adding Icons
Assigning An Icon Image
Streamlining The Icon Enum
Displaying Icons
A typical aspect of fetching data from the Internet is allowing users to refresh the data themselves. Let's start by adding a refresh button to our view. We'll also look at a new Auto Layout concept that will help us adapt our controls to different devices.
Section 6: Refreshing the Data
Refresh Button Adjustment
Now that we have a button in place, all we need to do is add a method to refresh the data. We'll also use an activity indicator to let users know the network request is in progress.
Section 7: Conclusion
Course Recap Quiz
3 questions

Students Who Viewed This Course Also Viewed

  • Loading
  • Loading
  • Loading

Instructor Biography

Psan Premarat, Software Developer

I am a software developer with over 10 years programming experience and consulting for corporations throughout the U.S. and Europe. I've programmed everything from security systems to music drivers for computer games.

I'm also a co-founder of an App development company. We have developed numerous apps the past 5 years, with many of them soaring to the top of the charts in their particular category.

I love speaking at conferences, user groups and code camps. I also love to teach in classrooms, consult businesses, and train people online, but what I love most is playing video games with my amazing wife.

Ready to start learning?
Take This Course