Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/m0saan/clima

the app will be able to check the weather for the current location based on the GPS data from the iPhone as well as by searching for a city manually.
https://github.com/m0saan/clima

json-api swift swift-networking swift5 weather-app

Last synced: 10 days ago
JSON representation

the app will be able to check the weather for the current location based on the GPS data from the iPhone as well as by searching for a city manually.

Awesome Lists containing this project

README

        

# Clima

## Our Goal

I am going to be introduced to the wonderful world of Application Programming Interfaces (APIs) to grab live data from the internet. If you’re dreaming of making that Twitter-powered stock trading app then you’re about add some serious tools to your toolbelt!

## What you will create

This project is all about making a beautiful, dark-mode enabled weather app. You'll be able to check the weather for the current location based on the GPS data from the iPhone as well as by searching for a city manually.

## What you will learn

* How to create a dark-mode enabled app.
* How to use vector images as image assets.
* Learn to use the UITextField to get user input.
* Learn about the delegate pattern.
* Swift protocols and extensions.
* Swift guard keyword.
* Swift computed properties.
* Swift closures and completion handlers.
* Learn to use URLSession to network and make HTTP requests.
* Parse JSON with the native Encodable and Decodable protocols.
* Learn to use Grand Central Dispatch to fetch the main thread.
* Learn to use Core Location to get the current location from the phone GPS.

### Condition Codes

```
switch conditionID {
case 200...232:
return "cloud.bolt"
case 300...321:
return "cloud.drizzle"
case 500...531:
return "cloud.rain"
case 600...622:
return "cloud.snow"
case 701...781:
return "cloud.fog"
case 800:
return "sun.max"
case 801...804:
return "cloud.bolt"
default:
return "cloud"
}
```