Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class ViewController: UIViewController {
- @IBOutlet weak var dateLabel: UILabel!
- @IBOutlet weak var minTemperature: UILabel!
- @IBOutlet weak var maxTemperature: UILabel!
- @IBOutlet weak var windSpeed: UILabel!
- @IBOutlet weak var rainfall: UILabel!
- @IBOutlet weak var pressure: UILabel!
- @IBOutlet weak var iconImageView: UIImageView!
- @IBAction func onPreviousDayButtonClick(_ sender: Any) {
- if self.day > 0 {
- self.day = self.day - 1
- let data = self.dailyData?[self.day]
- if data != nil{
- self.changeDay(dayInfo: data!)
- }
- }
- }
- @IBAction func onNextDayButtonClick(_ sender: Any) {
- if self.day < 7 {
- self.day = self.day+1
- let data = self.dailyData?[self.day]
- if data != nil{
- self.changeDay(dayInfo: data!)
- }
- }
- }
- private var dailyData : [[String : AnyObject]]? = nil
- private var day : Int = 0
- override func viewDidLoad() {
- super.viewDidLoad()
- // let urlRequestDark = URLRequest(url: URL (string: "https://api.darksky.net/forecast/a133de927c2852dbb273ea1b1071db81/,19.946788")!)
- let urlRequestDark = URLRequest(url: URL (string: "https://api.darksky.net/forecast/a133de927c2852dbb273ea1b1071db81/50.084046,19.946788")!)
- let task = URLSession.shared.dataTask(with: urlRequestDark) { [weak self] (data, response, error) in
- guard error == nil else { return }
- do {
- if let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? [String : AnyObject],
- let daily = json["daily"] as? [String : AnyObject],
- let data = daily["data"] as? [[String : AnyObject]],
- data.count > 7 {
- DispatchQueue.main.sync {
- self?.dailyData = data
- self?.changeDay(dayInfo: data[self?.day ?? 0])
- }
- }
- } catch let jsonError {
- print(jsonError.localizedDescription)
- }
- }
- task.resume()
- }
- func convertDoubleDateToString(date : Double) -> String {
- let date = NSDate(timeIntervalSince1970: date)
- let dateFormatter = DateFormatter()
- dateFormatter.dateFormat = "dd MMMM yyyy"
- dateFormatter.timeZone = NSTimeZone(name: "UTC") as TimeZone?
- return dateFormatter.string(from: date as Date)
- }
- func changeDay(dayInfo : [String : AnyObject] ) {
- let time : Int64 = dayInfo["time"] as? Int64 ?? 0
- self.dateLabel.text = convertDoubleDateToString(date: Double(time))
- let minTemp : Double = dayInfo["temperatureMin"] as? Double ?? 0
- let minTepmInt = doubleToInteger(data: (minTemp - 32)*5/9)
- self.minTemperature.text = "Min: \(minTepmInt) °C"
- let maxTemp : Double = dayInfo["temperatureMax"] as? Double ?? 0
- let maxTepmInt = doubleToInteger(data: (maxTemp - 32)*5/9)
- self.rainfall.text = "Rainfall: 0 mm"
- self.maxTemperature.text = "Max: \(maxTepmInt) °C"
- var windSpeed : Double = dayInfo["windSpeed"] as? Double ?? 0
- let windSpeedInt = doubleToInteger(data: windSpeed * 1.6)
- self.windSpeed.text = "Wind speed: \(windSpeedInt) km/h"
- let pressure : Double = dayInfo["pressure"] as? Double ?? 0
- self.pressure.text = "Pressure: \(pressure) hPa"
- self.setIconImage(icon: dayInfo["icon"] as! String)
- }
- func doubleToInteger(data:Double)-> Int {
- let doubleToString = "\(data)"
- let stringToInteger = (doubleToString as NSString).integerValue
- return stringToInteger
- }
- func setIconImage(icon : String){
- switch icon {
- case "clear-day":
- self.iconImageView.image = #imageLiteral(resourceName: "icons8-summer-100.png")
- case "snow":
- self.iconImageView.image = #imageLiteral(resourceName: "icons8-winter-100.png")
- case "fog":
- self.iconImageView.image = #imageLiteral(resourceName: "icons8-fog-100.png")
- case "rain":
- self.iconImageView.image = #imageLiteral(resourceName: "icons8-rain-100.png")
- case "sleet":
- self.iconImageView.image = #imageLiteral(resourceName: "icons8-sleet-100.png")
- case "wind":
- self.iconImageView.image = #imageLiteral(resourceName: "icons8-windy-weather-100.png")
- default:
- self.iconImageView.image = #imageLiteral(resourceName: "icons8-partly-cloudy-day-100.png")
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement