NEW: Join my free 100 Days of SwiftUI challenge today! >>

Propriétés

Les structures et les classes (qui permettent toutes deux de créer des "types de données") peuvent avoir leurs propres variables et constantes, appelées propriétés. Cela vous permet d'attacher des valeurs à vos types pour les représenter de manière unique, mais comme les types peuvent aussi avoir des méthodes, vous pouvez les faire se comporter en fonction de leurs propres données.

Jetons un coup d'oeil à un exemple maintenant :

struct Person {
    var clothes: String
    var shoes: String

    func describe() {
        print("I like wearing \(clothes) with \(shoes)")
    }
}

let taylor = Person(clothes: "T-shirts", shoes: "sneakers")
let other = Person(clothes: "short skirts", shoes: "high heels")
taylor.describe()
other.describe()

Comme vous pouvez le constater, lorsque vous utilisez une propriété dans une méthode, celle-ci utilise automatiquement la valeur appartenant au même objet.

Observateurs de propriétés (Property observers)

Swift vous permet d'ajouter du code à exécuter lorsqu'une propriété est sur le point d'être modifiée ou a été modifiée. C'est souvent un bon moyen de mettre à jour l'interface utilisateur lorsqu'une valeur change, par exemple.

Il existe deux types d'observateurs de propriétés : willSet et didSet, et ils sont appelés avant ou après la modification de la valeur d'une propriété. Dans willSet, Swift fournit à votre code une valeur spéciale appelée newValue qui contient la valeur de la nouvelle propriété. Dans didSet, vous disposez de oldValue pour représenter la valeur précédente.

Associons deux observateurs de propriétés à la propriété clothes d'une structure Person :

struct Person {
    var clothes: String {
        willSet {
            updateUI(msg: "I'm changing from \(clothes) to \(newValue)")
        }

        didSet {
            updateUI(msg: "I just changed from \(oldValue) to \(clothes)")
        }
    }
}

func updateUI(msg: String) {
    print(msg)
}

var taylor = Person(clothes: "T-shirts")
taylor.clothes = "short skirts"

Cela affichera les messages "I'm changing from T-shirts to short skirts" et "I just changed from T-shirts to short skirts."

Propriétés calculées

Il est possible de créer des propriétés qui exécutent en fait du code en coulisses. Nous avons déjà utilisé la méthode uppercased() des chaînes de caractères, par exemple, mais il existe également une propriété appelée capitalized qui peut être utilisée en cas de besoin, plutôt que chaque chaîne de caractères stocke systématiquement une version commençant par une majuscule d'elle-même.

Pour créer une propriété calculée, placez une accolade ouvrante après votre propriété, puis utilisez get ou set pour exécuter une action au moment opportun. Par exemple, si nous voulons ajouter une propriété ageInDogYears retournant automatiquement l'âge de la personne multiplié par sept, voici ce que nous devons écrire :

struct Person {
    var age: Int

    var ageInDogYears: Int {
        get {
            return age * 7
        }
    }
}

var fan = Person(age: 25)
print(fan.ageInDogYears)

Les propriétés calculées sont de plus en plus courantes dans le code d'Apple, mais moins courantes dans le code des utilisateurs.

Remarque : Si vous avez l'intention de les utiliser uniquement pour lire des données, vous pouvez simplement supprimer la partie get, comme ceci :

var ageInDogYears: Int {
    return age * 7
}

LEARN SWIFTUI FOR FREE I have a massive, free SwiftUI video collection on YouTube teaching you how to build complete apps with SwiftUI – check it out!

MASTER SWIFT NOW
Buy Testing Swift Buy Practical iOS 12 Buy Pro Swift Buy Swift Design Patterns Buy Swift Coding Challenges Buy Server-Side Swift (Vapor Edition) Buy Server-Side Swift (Kitura Edition) Buy Hacking with macOS Buy Advanced iOS Volume One Buy Advanced iOS Volume Two Buy Hacking with watchOS Buy Hacking with tvOS Buy Hacking with Swift Buy Dive Into SpriteKit Buy Swift in Sixty Seconds Buy Objective-C for Swift Developers Buy Beyond Code

Was this page useful? Let us know!