Skip to content

Simple Weather Application with UI Design and Weather Functionalities

Notifications You must be signed in to change notification settings

akzh4n/simpleweather_app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 

Repository files navigation

SimpleWeather

This simple app is my first pet project in iOS Development by using Swift Language. I tried to make the interface and features as user-friendly as possible. The app runs on iOS and iPadOS. The project will evolve with the different betas of Xcode.

Features

  • Gets current location and Weather information for this location
  • Beautiful UI design
  • Ability to search for locations
  • Overview of the cities [not full]
  • Open to all devices

API

SimpleWeather App - uses the OpenWeather API to fetch weather datas. It uses a free API key thereby it only has a 3 hours and 5 days forecast.

Code Review

  • Weather Data
struct WeatherData: Codable {
   let name: String
   let message: String?
   let main: Main
   let weather: [Weather]
   let sys: Sys
}

struct Main: Codable {
   let temp: Double
   let feels_like: Double
   let temp_min: Double
   let temp_max: Double
   let pressure: Double
   let humidity: Double
}

struct Weather: Codable {
   let id: Int
   let description: String
   let icon: String
}

struct Sys: Codable {
   let country: String
}
  • Connecting API
let weatherURL = "https://api.openweathermap.org/data/2.5/weather?units=imperial&appid=[TEXT YOUR API KEY]"
   
   var delegate: WeatherManagerDelegate?
   
   func fetchWeather(cityName: String) {
       
       if cityName.contains(" ") {
           
           let cityWithSpaces = cityName.replacingOccurrences(of: " ", with: "+")
           let urlString = "\(weatherURL)&q=\(cityWithSpaces)"
           performRequest(with: urlString)
           
       } else {
           
           let urlString = "\(weatherURL)&q=\(cityName)"
           performRequest(with: urlString)
       }
   }
   
  
   
   func fetchWeather(latitude: CLLocationDegrees, longitude: CLLocationDegrees) {
       
       let urlString = "\(weatherURL)&lat=\(latitude)&lon=\(longitude)"
       performRequest(with: urlString)
   }
  • Location Manager Delegate
@IBAction func locationButtonPressed(_ sender: UIButton) {
       
       print("Location button pressed")
       
       locationManager.requestWhenInUseAuthorization()
       locationManager.startUpdatingLocation()
       locationManager.requestLocation()
   }
   
   func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
       
       if let location = locations.last {
           locationManager.stopUpdatingLocation()
           let lat = location.coordinate.latitude
           let lon = location.coordinate.longitude
           weatherManager.fetchWeather(latitude: lat, longitude: lon)
       }
   }
   
   func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
       
       print("Error: \(error)")
   }

Installation

Requirements

  • Xcode 13+ with an iOS 13.0+ simulator
  • An OpenWeatherMap API key

Installation steps

  1. Clone the repo: git clone https://github.com/manste1n/simpleweather_app
  2. Add a Constants.swift file in the root folder of your project (same folder with Info.plist, Assets.xcassets, etc)
  3. Add the OpenWeatherMap API key and URL

 

Thx for attention :3

You can support me by following :>

About

Simple Weather Application with UI Design and Weather Functionalities

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages