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


  

Computed property - Computed properties are part of a property type in Swift. 

  1. Stored properties are the most common which save and return a stored value 

  2. 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 * years)/100

        }

    }

}

let calculateValue = CalculateLoan(amount: 20000, rate: 14, years: 20)

print(calculateValue.simpleInterest)



Property Observers (WillSet & DidSet) - Property observers means to observe and respond to changes in a property's value. Property observers are called every time a property's value is set, even if the new value is the same as the property's current value.



class Bank {

    

    //Property Observer

    

    var accountBlance: Double {

        

        // After a new value is set to your property if you want to run some code then you can use didSet

        

        didSet{

            alertToUpdateAccount()

        }

        

        // Execute before set new value assigned to the property

        

        willSet(newValue){

            if newValue >= 100000{

                print("Please check this account is authentic first")

            }

        }

    }

    

    init(_opningBalance: Double){

        accountBlance = _opningBalance

    }

    

    func addMoney(amount: Double){

        accountBlance += amount

    }

    

    func withdrowMoney(amount: Double){

        accountBlance -= amount

    }

    

    func alertToUpdateAccount(){

        print("Account balance is updated => \(accountBlance)")

    }

}


let bank = Bank(_opningBalance: 10000)

bank.addMoney(amount: 1000000)

print(bank.accountBlance)

Comments