Makrot @Observable
Gör en klass observerbar så att vyer följer den.
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 refreshBerä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. 🎉
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
- Från vystate till en modellklass
- Makrot @Observable
- @State för ägda objekt
- Dela modeller via @Environment