swift tableview JSONSerialization 스위프트 테이블뷰 제이슨



//

//  ViewController.swift

//  WeatherTable

//

//  Created by stayfoolish on 21/11/2018.

//  Copyright © 2018 stayfoolish. All rights reserved.

//


import UIKit


class ViewController: UIViewController,UITableViewDataSource  {

    var datalist =  NSDictionary()


    override func viewDidLoad() {

        super.viewDidLoad()

        // Do any additional setup after loading the view, typically from a nib.

        let baseURL = URL(string: "https://raw.githubusercontent.com/ChoiJinYoung/iphonewithswift2/master/weather.json")

        

        do {

            self.datalist  = try JSONSerialization.jsonObject(with: Data(contentsOf: baseURL!) , options: JSONSerialization.ReadingOptions.mutableContainers) as! NSDictionary

        } catch  {

            print("Error loading Data")

        }

        

        print(self.datalist)

        

        let className = "\(type(of:(((datalist["weatherinfo"] as! NSDictionary)["local"]) as! NSArray).count))"

        print("className : \(className)")

        

   

    }

    


    

    


    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

        return ((datalist["weatherinfo"] as! NSDictionary)["local"] as! NSArray).count

    }

    

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! WeatherCell


        

        //print("indexPath row : \(indexPath.row)")

        let dicTemp = ((datalist["weatherinfo"] as! NSDictionary)["local"] as! NSArray)[indexPath.row] as! NSDictionary

        

        print("dicTemp : \(dicTemp)")

        

        cell.countryLabel.text = dicTemp["country"] as? String

        

        let weatherStr = dicTemp["weather"] as? String

        

        cell.weatherLabel.text = weatherStr

        cell.temperatureLabel.text = dicTemp["temperature"] as? String

        

        if weatherStr == "맑음" {

            cell.imgView.image = UIImage(named: "sunny.png")

        }else if weatherStr == "비" {

            cell.imgView.image = UIImage(named: "rainy.png")

        }else if weatherStr == "흐림" {

            cell.imgView.image = UIImage(named: "cloudy.png")

        }else if weatherStr == "눈" {

            cell.imgView.image = UIImage(named: "snow.png")

        }else{

            cell.imgView.image = UIImage(named: "blizzard.png")

        }

        

        return cell

    }

    

    

}




//

//  WeatherCell.swift

//  WeatherTable

//

//  Created by stayfoolish on 22/11/2018.

//  Copyright © 2018 stayfoolish. All rights reserved.

//


import UIKit


class WeatherCell: UITableViewCell {


    @IBOutlet var countryLabel: UILabel!

    @IBOutlet var weatherLabel: UILabel!

    @IBOutlet var temperatureLabel: UILabel!

    @IBOutlet var imgView: UIImageView!

    

    override func awakeFromNib() {

        super.awakeFromNib()

        // Initialization code

    }


    override func setSelected(_ selected: Bool, animated: Bool) {

        super.setSelected(selected, animated: animated)


        // Configure the view for the selected state

    }


}



https://raw.githubusercontent.com/ChoiJinYoung/iphonewithswift2/master/weather.json


{
  "weatherinfo": {
    "local": [
      {
        "country": "한국",
        "weather": "비",
        "temperature": "20"
      },
      {
        "country": "일본",
        "weather": "맑음",
        "temperature": "19"
      },
      {
        "country": "중국",
        "weather": "눈",
        "temperature": "14"
      },
      {
        "country": "스페인",
        "weather": "우박",
        "temperature": "13"
      },
      {
        "country": "미국",
        "weather": "흐림",
        "temperature": "2"
      },
      {
        "country": "영국",
        "weather": "비",
        "temperature": "10"
      },
      {
        "country": "프랑스",
        "weather": "흐림",
        "temperature": "15"
      },
      {
        "country": "브라질",
        "weather": "흐림",
        "temperature": "35"
      },
      {
        "country": "스위스",
        "weather": "맑음",
        "temperature": "13"
      },
      {
        "country": "덴마크",
        "weather": "비",
        "temperature": "2"
      },
      {
        "country": "스웨덴",
        "weather": "눈",
        "temperature": "0"
      },
      {
        "country": "네덜란드",
        "weather": "비",
        "temperature": "12"
      },
      {
        "country": "크로아티아",
        "weather": "맑음",
        "temperature": "30"
      },
      {
        "country": "필리핀",
        "weather": "맑음",
        "temperature": "28"
      },
      {
        "country": "독일",
        "weather": "눈",
        "temperature": "3"
      },
      {
        "country": "헝가리",
        "weather": "비",
        "temperature": "13"
      },
      {
        "country": "벨기에",
        "weather": "흐림",
        "temperature": "8"
      },
      {
        "country": "핀란드",
        "weather": "우박",
        "temperature": "15"
      },
      {
        "country": "이탈리아",
        "weather": "맑음",
        "temperature": "23"
      }
    ]
  }
}






+ Recent posts