Swift Academy · Lektion

Associerade värden för rika data

Koppla data till enum-fall och extrahera den med mönstermatchning.

Lektion 2 av 412 steg

Associerade värden för rika data är en gratis lektion i Swift Academy på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Swift Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Swift Academy innehåller totalt 4 lektioner.

Välkommen

Associerade värden låter varje enum-case bära ytterligare data. De gör enum till kraftfulla taggade unioner — grunden för typsäker tillståndsmodellering i Swift.

Definiera associerade värden

```swift enum Barcode { case upc(Int, Int, Int, Int) case qrCode(String) } let product = Barcode.upc(8,85909,51226,3) let web = Barcode.qrCode("https://example.com") ```

Extrahera med switch

```swift switch barcode { case .upc(let n, let m, let p, let c): print("UPC: \(n)-\(m)-\(p)-\(c)") case .qrCode(let code): print("QR: \(code)") } ``` Eller använd `case let` för att binda allt på en gång: ```swift case let .upc(n,m,p,c): ... ```

Namngivna associerade värden

```swift enum NetworkResult { case success(statusCode: Int, data: Data) case failure(error: Error) } if case .success(let code, let data) = result { ... } ``` Etiketter gör bindningskontexten tydlig.

Associerade värden kontra råvärden

• Råvärden: konstanter vid kompilering, samma typ för alla cases, egenskapen `rawValue` • Associerade värden: data vid körning, varje case har sin egen typ, extraheras via mönstermatchning Du kan inte ha båda i samma enum.

Optionals som enum-typer

Swift's `Optional` är bokstavligen: ```swift enum Optional { case some(Wrapped) case none } ``` Varje `if let`, `switch` och `??` använder samma mekanism.

Result<Success, Failure>

```swift func fetch() -> Result { ... } switch fetch() { case .success(let data): process(data) case .failure(let err): print(err) } ``` `Result` är en enum i standardbiblioteket med två cases som har associerade värden.

Mönstermatchning med if case

```swift let item = Barcode.qrCode("hello") if case .qrCode(let code) = item { print("QR code: \(code)") } ``` `if case` är koncist när du bara är intresserad av ett case.

Guard case

```swift func process(_ result: NetworkResult) { guard case .success(_, let data) = result else { return } handle(data) } ``` `guard case` avslutar funktionen tidigt om mönstret inte matchar.

Enum-typer i samlingar

```swift let events: [AppEvent] = [.login("alice"), .pageView("/home"), .logout] let logins = events.compactMap { if case .login(let u) = $0 { return u } else { return nil } } ```

Snabbkontroll

Vilket nyckelord används för att extrahera associerade värden i ett switch-case?

Sammanfattning

Viktiga slutsatser: • Associerade värden kopplar data till enskilda cases • Extrahera dem med `switch`, `if case` eller `guard case` • Använd namngivna etiketter för tydlighet: `.success(code: Int, data: Data)` • `Optional` och `Result` är enum-typer i standardbiblioteket med associerade värden • Du kan inte blanda associerade värden och råvärden i samma enum Nästa avsnitt: indirect-enum och rekursiva strukturer.
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
122
Lektioner
409

Vanliga frågor

Är lektionen ”Associerade värden för rika data” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Swift Academy, inklusive ”Associerade värden för rika data”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Swift Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Associerade värden för rika data”?

Koppla data till enum-fall och extrahera den med mönstermatchning. Ni övar på Swift 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 Swift Academy?

Du behöver inga förkunskaper. Utbildningen i Swift 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 ”Associerade värden för rika data”?

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 Swift Academy-lektionen?

Ja. Varje Swift 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. Råvärden och CaseIterable
  2. Associerade värden för rika data
  3. Indirekta enum-typer och rekursiva strukturer
  4. Modellera tillståndsmaskiner med enum-typer
← Tillbaka till Swift Academy