Advertisement
Guest User

Untitled

a guest
Oct 17th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 4.80 KB | None | 0 0
  1. class ViewController: UIViewController {
  2.    
  3.     @IBOutlet weak var dateLabel: UILabel!
  4.     @IBOutlet weak var minTemperature: UILabel!
  5.     @IBOutlet weak var maxTemperature: UILabel!
  6.     @IBOutlet weak var windSpeed: UILabel!
  7.     @IBOutlet weak var rainfall: UILabel!
  8.     @IBOutlet weak var pressure: UILabel!
  9.    
  10.     @IBOutlet weak var iconImageView: UIImageView!
  11.     @IBAction func onPreviousDayButtonClick(_ sender: Any) {
  12.         if self.day > 0 {
  13.             self.day = self.day - 1
  14.             let data = self.dailyData?[self.day]
  15.             if data != nil{
  16.                 self.changeDay(dayInfo: data!)
  17.             }
  18.         }
  19.     }
  20.     @IBAction func onNextDayButtonClick(_ sender: Any) {
  21.         if self.day < 7 {
  22.             self.day = self.day+1
  23.             let data = self.dailyData?[self.day]
  24.             if data != nil{
  25.                 self.changeDay(dayInfo: data!)
  26.             }
  27.         }
  28.     }
  29.     private var dailyData : [[String : AnyObject]]? = nil
  30.     private var day : Int = 0
  31.     override func viewDidLoad() {
  32.         super.viewDidLoad()
  33.        
  34. //        let urlRequestDark = URLRequest(url: URL (string: "https://api.darksky.net/forecast/a133de927c2852dbb273ea1b1071db81/,19.946788")!)
  35.         let urlRequestDark = URLRequest(url: URL (string: "https://api.darksky.net/forecast/a133de927c2852dbb273ea1b1071db81/50.084046,19.946788")!)
  36.  
  37.         let task = URLSession.shared.dataTask(with: urlRequestDark) { [weak self] (data, response, error) in
  38.             guard error == nil else { return }
  39.             do {
  40.                 if let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? [String : AnyObject],
  41.                     let daily = json["daily"] as? [String : AnyObject],
  42.                     let data = daily["data"] as? [[String : AnyObject]],
  43.                         data.count > 7 {
  44.                             DispatchQueue.main.sync {
  45.                                     self?.dailyData = data
  46.                                     self?.changeDay(dayInfo: data[self?.day ?? 0])
  47.                             }
  48.                         }
  49.                
  50.             } catch let jsonError {
  51.                 print(jsonError.localizedDescription)
  52.             }
  53.         }
  54.         task.resume()
  55.     }
  56.    
  57.    
  58.     func convertDoubleDateToString(date : Double) -> String {
  59.             let date = NSDate(timeIntervalSince1970: date)
  60.  
  61.         let dateFormatter = DateFormatter()
  62.             dateFormatter.dateFormat = "dd  MMMM yyyy"
  63.             dateFormatter.timeZone = NSTimeZone(name: "UTC") as TimeZone?
  64.         return dateFormatter.string(from: date as Date)
  65.     }
  66.    
  67.     func changeDay(dayInfo : [String : AnyObject] ) {
  68.         let time : Int64 = dayInfo["time"] as? Int64 ?? 0
  69.         self.dateLabel.text = convertDoubleDateToString(date: Double(time))
  70.         let minTemp : Double = dayInfo["temperatureMin"] as? Double ?? 0
  71.         let minTepmInt = doubleToInteger(data: (minTemp - 32)*5/9)
  72.         self.minTemperature.text = "Min: \(minTepmInt) °C"
  73.         let maxTemp : Double = dayInfo["temperatureMax"] as? Double ?? 0
  74.         let maxTepmInt = doubleToInteger(data: (maxTemp - 32)*5/9)
  75.         self.rainfall.text = "Rainfall: 0 mm"
  76.         self.maxTemperature.text = "Max: \(maxTepmInt) °C"
  77.         var windSpeed : Double = dayInfo["windSpeed"] as? Double ?? 0
  78.         let windSpeedInt = doubleToInteger(data: windSpeed * 1.6)
  79.         self.windSpeed.text = "Wind speed: \(windSpeedInt) km/h"
  80.         let pressure : Double = dayInfo["pressure"] as? Double ?? 0
  81.         self.pressure.text = "Pressure: \(pressure) hPa"
  82.        
  83.         self.setIconImage(icon: dayInfo["icon"] as! String)
  84.        
  85.        
  86.     }
  87.    
  88.     func doubleToInteger(data:Double)-> Int {
  89.         let doubleToString = "\(data)"
  90.         let stringToInteger = (doubleToString as NSString).integerValue
  91.  
  92.         return stringToInteger
  93.     }
  94.    
  95.     func setIconImage(icon : String){
  96.            
  97.         switch icon {
  98.         case "clear-day":
  99.             self.iconImageView.image = #imageLiteral(resourceName: "icons8-summer-100.png")
  100.         case "snow":
  101.             self.iconImageView.image = #imageLiteral(resourceName: "icons8-winter-100.png")
  102.         case "fog":
  103.             self.iconImageView.image = #imageLiteral(resourceName: "icons8-fog-100.png")
  104.         case "rain":
  105.             self.iconImageView.image = #imageLiteral(resourceName: "icons8-rain-100.png")
  106.         case "sleet":
  107.             self.iconImageView.image = #imageLiteral(resourceName: "icons8-sleet-100.png")
  108.         case "wind":
  109.             self.iconImageView.image = #imageLiteral(resourceName: "icons8-windy-weather-100.png")
  110.         default:
  111.             self.iconImageView.image = #imageLiteral(resourceName: "icons8-partly-cloudy-day-100.png")
  112.         }
  113.        
  114.     }
  115. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement