NEW: Learn SwiftUI with my free YouTube video series! >>

< Previous: Clase   Next: Proprietăți și metode statice >

Proprietăți

Structurile și clasele (colectiv numite: "tipuri") pot avea propriile variabile și constante, și acestea se numesc proprietăți. Ele îți permit să atașezi valori tipurilor tale pentru a le reprezenta în mod unic, dar pentru că tipurile pot avea de asemenea metode poți să le faci să se comporte în concordanță cu propriile lor date.

Let's take a look at an example now:

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()

După cum poți vedea, când folosești o proprietate în interiorul unei metode va folosi automat valoarea care aparține aceluiași obiect.

Observatori ai proprietăților

Swift îți permite să adaugi cod care va rula atunci când o proprietate este pe cale să se modifice sau când a fost modificată. De multe ori aceasta este o bună modalitate de a actualiza o interfață atunci când o valoare se modifică, de exemplu:

Există două tipuri de observatori ai proprietăților: willSet și didSet, și ei sunt apelați înainte sau după ce proprietatea se modifică. În willSet Swift îți oferă o valoare specială numită newValue care conține noua valoare pe care proprietatea o va avea, și în didSet îți este oferită oldValue pentru a prezenta valoarea precedentă.

Haide să adăugăm doi observatori proprietății clothes a structurii 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"

Va fi printat mesajul "I'm changing from T-shirts to short skirts" și "I just changed from T-shirts to short skirts."

Proprietăți calculate

Este posibil să creezi proprietăți care sunt defapt cod în spate. Am folosit deja metoda uppercased() a stringurilor, de exemplu, dar există de asemenea o metodă numită capitalized care este calculată când este nevoie, și nu este stocată pentru fiecare string în parte.

Pentru a crea o proprietate calculată, deschide o acoladă după proprietate apoi folosește get sau set pentru ca o acțiune să se petreacă la timpul potrivit. De exemplu, dacă vrem să adăugăm o proprietate ageInDogYears care returnează automat vârsta persoanei înmuțită cu șapte, am putea face asta:

struct Person {
    var age: Int

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

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

Proprietățile calculate sunt din ce în ce mai folosite în codul Apple, dar mai puțin întâlnite în codul userilor.

Notă: Dacă intenționezi să le folosești doar pentru a citi date, poți pur și simplu să ștergi partea cu get în totalitate, în felul acesta:

var ageInDogYears: Int {
    return age * 7
}

LEARN SWIFTUI FOR FREE I wrote a massive, free SwiftUI tutorial collection, and also have a growing list of free SwiftUI tutorials on YouTube – get started today!

< Previous: Clase   Next: Proprietăți și metode statice >
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 me know!

Click here to visit the Hacking with Swift store >>