Typy opcjonalne
Typy opcjonalne
Typy opcjonalne to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 1 z 1. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Swift Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Swift Academy zawiera 1 lekcji w sumie.
Wprowadzenie
Dzień dobry,
Służy do wyrażenia tego, że zmienna opcjonalna może nie mieć wartości.
Jeśli zmienna typu opcjonalnego ma wartość, zostaje ona rozpakowana i użyta. W przeciwnym razie wartość nie istnieje.
Typ opcjonalny dla wielu typów w Swift
Można go porównać do wskaźnika nil w Obj-C. Wskaźnik nil jest jednak poprawny wyłącznie dla typów obiektowych.
Typy opcjonalne w Swift są używane nie tylko dla typów obiektowych, lecz także dla Struct, enum oraz typów prostych.
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.
*/Wartość nil w Swift i nil w Obj-C nie są tym samym
Wartość nil w Swift i nil w Obj-C nie są takie same.
W Obj-C wskaźnik nil oznacza brak obiektu. W Swift nie jest to wskaźnik nil. Wartość nil w Swift oznacza brak danych i jest obsługiwana także dla innych typów, nie tylko dla typu obiektowego.
Wymuszone rozpakowanie
Dostęp do zmiennych zdefiniowanych jako opcjonalne można uzyskać za pomocą wymuszonego rozpakowania.
Za pomocą operatora wykrzyknika można wymusić rozpakowanie w kodzie, jednak ogólnie nie jest to zalecane.
Jeśli podczas wymuszonego rozpakowania dane, do których się odwołujemy, nie są dostępne, wystąpi błąd wykonania.
let convertedNumber : Int? = 123
if convertedNumber != nil {
print("convertedNumber has an integer value of \(convertedNumber!).")
}
// Prints "convertedNumber has an integer value of 123."Dostęp do typu opcjonalnego za pomocą wiązania opcjonalnego
Dostęp do typu opcjonalnego za pomocą wiązania opcjonalnego
Za pomocą bloku if let możemy uzyskać dostęp do wartości zmiennej opcjonalnej, przypisując ją do stałej lub zmiennej.
Jest to bardziej elegancka metoda niż wymuszone rozpakowanie.
var possibleNumber : String? = "10"
if let actualNumber = possibleNumber {
print(actualNumber)
}Przykład
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.
*/
Opcjonalne wartości rozpakowywane niejawnie
Opcjonalne wartości rozpakowywane niejawnie
W niektórych przypadkach wartość opcjonalna jest przypisywana na początku, a w kolejnych etapach mamy pewność, że nie jest nil.
W takich sytuacjach zamiast oznaczać ją jako opcjonalną (?) używa się operatora (!), wskazując, że ta wartość na pewno nie jest nil.
Taki sposób definiowania jest określany jako „opcjonalne wartości rozpakowywane niejawnie”.
Niejawnie rozpakowywane
Niejawnie rozpakowywane
Najczęściej stosuje się je podczas inicjalizacji klasy.
W przeciwieństwie do tradycyjnych typów opcjonalnych nie musimy rozpakowywać zmiennych zadeklarowanych jako niejawnie rozpakowywane.
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 Przykład
Jeśli przypiszemy nil do zmiennych tego typu, wystąpią błędy wykonania.
Przyjrzyjmy się przykładowi
/*
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."Ostrzeżenie
Jeśli zmienna może przyjmować wartość nil, nie należy używać niejawnie rozpakowywanego typu opcjonalnego.
Operator nil-coalescing
Operator nil-coalescing
Ułatwia rozpakowywanie typów opcjonalnych.
Przeanalizujmy przykład.
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.
*/
Gratulacje
Gratulacje 🎉
Typy opcjonalne to jedna z najważniejszych funkcji języka Swift. Korzystając z typów opcjonalnych, pozbywamy się kontroli Nil, piszemy kod w bardziej elegancki sposób i zwiększamy bezpieczeństwo aplikacji.
Do zobaczenia w następnej lekcji 🥳

Często zadawane pytania
Czy lekcja „Typy opcjonalne” jest bezpłatna?
Tak — pełny tekst „Typy opcjonalne” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Swift Academy, przejdź na CoddyKit PRO. Kurs Swift Academy zawiera 1 lekcji w sumie.
Co nauczysz się w „Typy opcjonalne”?
Typy opcjonalne Ćwiczysz Swift Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Swift Academy?
Nie wymagamy żadnego doświadczenia. Swift Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 1.
Ile czasu zajmuje lekcja „Typy opcjonalne”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Swift Academy?
Tak. Każda lekcja Swift Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.