Comme leur nom l’indique, ces propriétés observent répondent à un changement de valeur. Il est appelé à chaque fois qu’une valeur lui est définie, même si c’est la même. Nous pouvons observer 2 choses:

  • willSet, avant que la valeur soit stockée.
  • didSet, une fois que la valeur est stockée.

Pour voir ceci, ajoutons une souris comme propriété de notre ordinateur

class Ordinateur {
    //Ajout des propriétés
    var marque: String = “Apple”
    var modele: String = “iMac 27”
    var année: Int = 2019
    var processeur: String = “Core i7”
    var ram: Int = 16
    var stockage: Int = 256
    var défintion: (Int, Int) = (4000, 2000)
    var completeName: String {
        return marque + ” “ + modele
    }
    var ramComputed: String {
        get {
            return “(ram)”
        }
        set(newValue) {
            ram = Int(newValue) ?? ram
        }
    }
    var mouse: String = “Aucune”{
        willSet(newMouse) {
            print(“Je vais installer cette souris: ” + newMouse)
        }
        didSet {
            print(“Avant j’avais ” + oldValue + ” comme souris”)
            print(“Maintenant j’ai cette souris: ” + mouse)
        }
    }
    //Ajout des méthodes
}

var iMac = Ordinateur()
iMac.mouse = “Magic mouse 2”
//Je vais installer cette souris: Magic mouse 2
//Avant j’avais Aucune comme souris
//Maintenant j’ai cette souris: Magic mouse 2   

Regardons comment cela fonctionne. willSet prend entre parenthèses la valeur que l’on va mettre.DidSet contient une oldValue qui est l’ancienne valeur, ainsi que sa valeur qui vient d’être mise en place. Ou ai-je trouvé oldValue? Je ne l’ai écrit nulle part, cette variable est présente dans le didSet. Cela nous permet de faire des vérifications.