How to override setter in Swift How to override setter in Swift swift swift

How to override setter in Swift


What do you want to do with your custom setter? If you want the class to do something before/after the value is set, you can use willSet/didSet:

class TheSuperClass {    var aVar = 0 } class SubClass: TheSuperClass {      override var aVar: Int {          willSet {             print("WillSet aVar to \(newValue) from \(aVar)")         }         didSet {             print("didSet aVar to \(aVar) from \(oldValue)")         }     } } let aSub = SubClass()aSub.aVar = 5

Console Output:

WillSet aVar to 5 from 0

didSet aVar to 5 from 0

If, however, you want to completely change how the setter interacts with the superclass:

class SecondSubClass: TheSuperClass {      override var aVar: Int {         get {            return super.aVar        }        set {             print("Would have set aVar to \(newValue) from \(aVar)")         }     } } let secondSub = SecondSubClass()print(secondSub.aVar)secondSub.aVar = 5print(secondSub.aVar)

Console output:

0

Would have set aVar to 5 from 0

0