SALE ENDS TODAY: Save 50% on all Swift books and bundles! >>

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
}

SPONSORED Instabug helps you identify and resolve severe crashes quickly. You can retrace in-app events and know exactly which line of code caused the crash along with environment details, network logs, repro steps, and the session profiler. Ask more questions or keep users up-to-date with in-app replies straight from your dashboard. Instabug takes data privacy seriously, so no one sees your data but you! See more detailed features comparison and try Instabug's crash reporting SDK for free.

Save 50% on all books and bundles

The biggest ever Hacking with Swift sale is now on, letting you save 50% on all books and bundles. Learn something new with Swift and enjoy great savings while the sale lasts!

Click here to save 50% in our Black Friday sale!

BUY OUR BOOKS
Buy Pro Swift Buy Swift Design Patterns Buy Testing Swift Buy Hacking with iOS Buy Swift Coding Challenges Buy Swift on Sundays Volume One Buy Server-Side Swift (Vapor Edition) Buy Advanced iOS Volume One Buy Advanced iOS Volume Two Buy Advanced iOS Volume Three Buy Hacking with watchOS Buy Hacking with tvOS Buy Hacking with macOS Buy Dive Into SpriteKit Buy Swift in Sixty Seconds Buy Objective-C for Swift Developers Buy Server-Side Swift (Kitura Edition) Buy Beyond Code

Was this page useful? Let us know!