Property observers willSet and didSet; Property getters and setters

When and why should I use willSet/didSet

  • willSet is called just before the value is stored.
  • didSet is called immediately after the new value is stored.

Consider your example with outputs:

var variable1 : Int = 0 {
            print("didSet called")
            print("willSet called")

    print("we are going to add 3")

     variable1 = 3

    print("we added 3")


we are going to add 3
willSet called
didSet called
we added 3

it works like pre/post -condition

On the other hand, you can use get if you want to add, for example, a read-only property:

var value : Int {
 get {
    return 34


value = 2 // error: cannot assign to a get-only property 'value'