Property in Swift - Computed property | Property Observers (WillSet & DidSet)

   Computed property -  Computed properties are part of a property type in Swift.  Stored properties are the most common which save and return a stored value  Computed properties calculate (rather than store) a value. A computed property provides a getter and an optional setter to indirectly access other properties and values. Computed property in swift is an interesting topic as you can write code inside a property in swift. Computed properties are provided by classes, structures, and enumerations but stored properties are provided only by classes and structures. This computed property swift tutorial has some tips on how to use the computed property in the right way and avoid the common mistakes that swift programming beginners do while computed property. Example :- Computed property A Calculate Simple Intrest struct CalculateLoan {      var amount : Int      var rate : Int      var years : Int      var simpleInterest: Int {          get {              return ( amount * rate

Parse JSON Data with GET Method Using JsonDecoder in iOS

Parse JSON Data(GET Method) in UITableViewCell Using JsonDecoder Swift 4 & Xcode 9


1) -- ViewController Class

First Create a new Project (ParseDataGETMethod) after make a struct (GetJsonData)
type data parameter


import UIKit

struct GetJsonData:Decodable {
    let name: String
    let capital: String
    let alpha2Code: String
    let alpha3Code: String
    let region: String
    let subregion: String
    
}
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
    var arrData = [GetJsonData]()
    @IBOutlet var tableView: UITableView!
    override func viewDidLoad() {
        super.viewDidLoad()
        getJSONData()
    }
    func getJSONData(){
        let url = URL(string: "https://restcountries.eu/rest/v2/all")
        let session = URLSession.shared
        session.dataTask(with: url!) { (data, response, error) in
            do{
                if error == nil {
                    self.arrData = try JSONDecoder().decode([GetJsonData].self, from: data!)
                    for mainarr in self.arrData{
                       // print(mainarr.name, ":", mainarr.capital, "-", mainarr.alpha2Code )
                        DispatchQueue.main.sync {
                            self.tableView.reloadData()
                        }
                    }
                }
            }catch{
                print("Error in JSON Data")
            }
            
        }.resume()
    }
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return self.arrData.count
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell:tableViewCell = tableView.dequeueReusableCell(withIdentifier: "cell") as! tableViewCell
        cell.lblname.text = "Name: \(arrData[indexPath.row].name)"
        cell.lblcapital.text = "Capital: \(arrData[indexPath.row].capital)"
        return cell
    }
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let detail:DetailViewController = self.storyboard?.instantiateViewController(withIdentifier: "detail") as! DetailViewController
        detail.strregion = "Region:- \(arrData[indexPath.row].region)"
        detail.strsubregion = " SubRegion:- \(arrData[indexPath.row].subregion)"
        detail.stralpha2 = "Alpha2:-\(arrData[indexPath.row].alpha2Code)"
        detail.stralpha3 = "Aipha3:- \(arrData[indexPath.row].alpha3Code)"
        self.navigationController?.pushViewController(detail, animated: true)
        
        
    }
    
}

Parse JSON Data(GET Method)


2) ---

import UIKit

class tableViewCell: UITableViewCell {
    
    @IBOutlet var lblname: UILabel!
    @IBOutlet var lblcapital: UILabel!
    
    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
    }

}

Output:-



Parse JSON Data(GET Method)



3)----

import UIKit

class DetailViewController: UIViewController {

    @IBOutlet var alpha2: UILabel!
    @IBOutlet var alpha3: UILabel!
    @IBOutlet var subregion: UILabel!
    @IBOutlet var region: UILabel!
    var strregion = ""
    var strsubregion = ""
    var stralpha2 = ""
    var stralpha3 = ""
    
    override func viewDidLoad() {
        super.viewDidLoad()
        alpha2.text = stralpha2
        alpha3.text = stralpha3
        region.text = strregion
        subregion.text = strsubregion
    }

}



Output:-



Parse JSON Data(GET Method)

Comments