Optionals
Optionals
Optionals är en gratis lektion i Swift Academy på CoddyKit. Detta är lektion 1 av 1. 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 1 lektioner.
Introduktion
Hej!
Används för att uttrycka att en Optional-variabel kanske inte har något värde.
Om en variabel av typen Optional har ett värde packas variabeln upp och används. Annars saknas ett värde.
Användning av Optional för många typer i Swift
Det kan jämföras med nil-pekaren i Obj-C. En nil-pekare är dock endast giltig för objekttyper.
Optionals i Swift används inte bara för objekttyper, utan även för Struct, enum och enkla typer.
var optionalVar: String?
// optionalVar is automatically set to nil]
/*
Since we define it as optional without
assigning a value, the variable
automatically takes the value of nil.
*/nil i Swift och nil i Obj-C är inte samma sak
nil i Swift och nil i Obj-C är inte samma.
En nil-pekare i Obj-C anger att objektet saknas. I Swift är det däremot inte en nil-pekare. nil i Swift anger att data saknas och kan användas även med andra typer än objekttyper.
force unwrap
Variabler som vi definierar som Optional kan nås med metoden force unwrap.
Med utropsoperatorn kan koden tvinga fram en uppackning, men det är i allmänhet inte särskilt bra att använda den.
Om referensdatan inte är tillgänglig vid force unwrap får vi ett körningsfel.
let convertedNumber : Int? = 123
if convertedNumber != nil {
print("convertedNumber has an integer value of \(convertedNumber!).")
}
// Prints "convertedNumber has an integer value of 123."Åtkomst till Optional med Optional Binding
Med blocket if let kan vi komma åt värdet i Optional-variabeln genom att tilldela det till en konstant eller variabel.
Att använda denna metod i stället för force unwrap är ett elegantare alternativ.
var possibleNumber : String? = "10"
if let actualNumber = possibleNumber {
print(actualNumber)
}Exempel
if let firstNumber = Int("4"), let secondNumber = Int("42"),
firstNumber < secondNumber && secondNumber < 100 {
print("\(firstNumber) < \(secondNumber) < 100")
}
// Prints "4 < 42 < 100"
/*
If at least one of them is false,
it will not be entered in the if blog.
*/
Implicitly Unwrapped Optionals
I vissa fall tilldelas Optional-värdet i det första steget, och i de följande stegen är det garanterat att det inte är nil.
I sådana fall uttrycks Optional inte med (?) utan med (!) för att ange att det definitivt inte är nil.
Denna typ av definition kallas ”implicitly unwrapped optionals”.
implicit uppackning
Det vanligaste användningsområdet är när en klass initieras.
Till skillnad från traditionella Optionals behöver vi inte packa upp variabler som implicit uttrycks som uppackade.
let possibleString: String? = "An optional string."
// requires an exclamation mark
let forcedString: String = possibleString!
let assumedString: String! = "An implicitly unwrapped optional string."
// no need for an exclamation mark
let implicitString: String = assumedString Exempel
Om vi tilldelar nil till variabler av denna typ får vi körningsfel.
Vi tar ett exempel
/*
We can use it during optional binding or we can check for nil.
So we use implicitly unwrapped optional
in the same way we use classic optional.
*/
var assumedString: String! = nil
if let definiteString = assumedString {
print(definiteString)
}
// Prints "An implicitly unwrapped optional string."Varning
Om en variabel kan vara nil ska en implicitly unwrapped optional inte användas.
Nil-coalescing-operatorn
Den gör det enklare att packa upp optionella typer.
Låt oss se ett exempel.
let defaultColorName = "red"
// defaults to nil
var userDefinedColorName: String?
var colorNameToUse = userDefinedColorName ?? defaultColorName
/*
userDefinedColorName is nil,
so colorNameToUse is set to the default of "red"
*/
// a != nil ? a! : b
/*
We can think of it as a shortcut to the above expression.
A checks if a is nil, if a is not nil, it unwrap and eturn,
otherwise it returns the default value, ie b.
*/
Grattis
Grattis 🎉
Begreppet optional är en av Swifts viktigaste funktioner. Genom att använda optionals slipper vi nil-kontroller, kan skriva mer elegant kod och göra våra applikationer säkrare.
Vi ses i nästa lektion 🥳

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 ”Optionals” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Swift Academy, inklusive ”Optionals”, 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 1 lektioner.
Vad lär jag mig i ”Optionals”?
Optionals 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 1 av 1.
Hur lång tid tar lektionen ”Optionals”?
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.