UPGRADE YOUR SKILLS: Learn advanced Swift and SwiftUI on Hacking with Swift+! >>

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
}
Hacking with Swift is sponsored by Essential Developer

SPONSORED Join a FREE crash course for mid/senior iOS devs who want to achieve an expert level of technical and practical skills – it’s the fast track to being a complete senior developer! Hurry up because it'll be available only until April 28th.

Click to save your free spot now

Sponsor Hacking with Swift and reach the world's largest Swift community!

BUY OUR BOOKS
Buy Pro Swift Buy Pro SwiftUI 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 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 Beyond Code

Was this page useful? Let us know!

Average rating: 4.0/5

 
Unknown user

You are not logged in

Log in or create account
 

Link copied to your pasteboard.