SwiftUI Academy · Lektion

Makrot @Observable

Gör en klass observerbar så att vyer följer den.

Lektion 2 av 413 steg

Makrot @Observable är en gratis lektion i SwiftUI Academy på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för SwiftUI Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i SwiftUI Academy innehåller totalt 4 lektioner.

Problemet som ska lösas

En vanlig modellklass innehåller data, men SwiftUI ritar inte om när datan ändras. Vi måste göra klassen observerbar.

Möt @Observable

Makrot @Observable markerar en klass så att SwiftUI bevakar dess egenskaper och uppdaterar alla vyer som läser dem. ✨

@Observable
class Counter {
    var count = 0
}

Vad ett makro gör

Ett makro genererar extra kod åt dig under kompileringen, så att ett kort attribut lägger till all infrastruktur för ändringsspårning.

Importera Observation

Makrot finns i ramverket Observation, så lägg till en import högst upp i filen innan du använder det.

import Observation

@Observable
class Counter { var count = 0 }

Inga wrappers behövs

Med @Observable markerar du vanliga lagrade egenskaper. Ingen wrapper behövs för varje egenskap för att SwiftUI ska kunna spåra dem.

@Observable
class Counter {
    var count = 0
    var name = "Taps"
}

Läsning utlöser spårning

SwiftUI uppdaterar bara de egenskaper som en vy faktiskt läser i sin body, så oanvända värden kostar ingenting.

Skrivning utlöser uppdateringar

När du ändrar en spårad egenskap schemaläggs alla vyer som läser den automatiskt för att ritas om.

model.count += 1  // views reading count refresh

Beräknade egenskaper fungerar också

En beräknad egenskap som bygger på spårade värden uppdaterar också vyer, eftersom en läsning av den innebär att dess indata läses.

@Observable
class Counter {
    var count = 0
    var label: String { "Taps: \(count)" }
}

Detaljerad som standard

Spårningen är detaljerad: när en egenskap ändras uppdateras bara de vyer som läser den egenskapen, inte hela skärmen.

Ersätter ObservableObject

@Observable är den moderna ersättningen för det äldre mönstret med ObservableObject och @Published, med betydligt mindre boilerplate.

Ignorera en egenskap

Markera ett värde med @ObservationIgnored när det inte ska utlösa uppdateringar, till exempel en cache eller ett internt tillfälligt värde.

@Observable
class Counter {
    @ObservationIgnored var cache = 0
}

Snabb kontroll

Dags att kontrollera hur väl du behärskar @Observable.

Sammanfattning

Du skapade en modell med @Observable, så SwiftUI spårar de egenskaper som dina vyer läser och ritar om dem exakt när värdena ändras. 🎉

Gratis att börja

Lär dig Swift med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
30
Lektioner
120

Vanliga frågor

Är lektionen ”Makrot @Observable” gratis?

Ja – hela texten till ”Makrot @Observable” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i SwiftUI Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i SwiftUI Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Makrot @Observable”?

Gör en klass observerbar så att vyer följer den. Ni övar på SwiftUI Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig SwiftUI Academy?

Du behöver inga förkunskaper. Utbildningen i SwiftUI Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Makrot @Observable”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här SwiftUI Academy-lektionen?

Ja. Varje SwiftUI Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Från vystate till en modellklass
  2. Makrot @Observable
  3. @State för ägda objekt
  4. Dela modeller via @Environment
← Tillbaka till SwiftUI Academy