Menu
Coddy logo textTech

Swift Cheat Sheet: ściąga ze Swifta

Ostatnia aktualizacja

Hello World i podstawy

Swift nie wymaga kodu szablonowego na najwyższym poziomie: wystarczy jedna linia.

OperacjaSkładnia
Wypisanie liniiprint("Hello, World!")
Wypisanie bez nowej liniiprint("Hi", terminator: "")
Interpolacja stringówprint("Hi \(name)")
Komentarz// this is a comment
Komentarz wieloliniowy/* ... */
Import modułuimport Foundation
Uruchomienie plikuswift run lub swift main.swift

Zmienne (let / var) i typy

Używaj let dla stałych i var dla wartości zmiennych; typy są zwykle wnioskowane.

OperacjaSkładnia
Stałalet age = 30
Variablevar count = 0
Jawny typlet name: String = "Ada"
Typy podstawoweInt, Double, String, Bool, Character
Konwersja typuDouble(i), String(n), Int("42")
Krotkalet pair = (1, "a")
Alias typutypealias ID = Int
Sprawdzenie typuvalue is String, value as? String

Opcjonale

Opcjonale opisują możliwy brak wartości; przed użyciem trzeba je rozpakować.

OperacjaSkładnia
Deklaracja opcjonalavar name: String? = nil
Wiązanie opcjonala (optional binding)if let n = name { ... }
Rozpakowanie przez guardguard let n = name else { return }
Nil-coalescinglet n = name ?? "default"
Optional chaininguser?.address?.city
Wymuszone rozpakowanie (niebezpieczne)name!
Niejawnie rozpakowanyvar name: String!
Map na opcjonaluname.map { $0.count }

Stringi

Stringi to typy wartościowe z pełną obsługą Unicode.

OperacjaSkładnia
Długośćs.count
Wielkie / małe literys.uppercased(), s.lowercased()
Łączenie (konkatenacja)"foo" + "bar"
Interpolacja"Total: \(price)"
Sprawdzenie, czy zawieras.contains("ell")
Sprawdzenie prefiksu / sufiksus.hasPrefix("he")
Podziałs.split(separator: ",")
Zamianas.replacingOccurrences(of: "a", with: "b")
String wieloliniowy""" ... """

Kolekcje (Array, Dictionary, Set)

Trzy podstawowe typy kolekcji, wszystkie są typami wartościowymi.

OperacjaSkładnia
Literał tablicyvar nums = [1, 2, 3]
Dodanie na końcunums.append(4)
Dostęp / liczba elementównums[0], nums.count
Map / filternums.map { $0 * 2 }, nums.filter { $0 > 1 }
Literał słownikavar ages = ["Ada": 30]
Dostęp do słownikaages["Ada"] zwraca opcjonal
Literał zbioruvar ids: Set = [1, 2, 3]
Wstawienie do zbioruids.insert(4)
Iteracja po słownikufor (k, v) in ages { ... }

Instrukcje sterujące

Warunki nie wymagają nawiasów; switch musi obejmować wszystkie przypadki.

OperacjaSkładnia
If / elseif x > 0 { ... } else { ... }
Operator trójargumentowylet r = x > 0 ? "pos" : "neg"
Switchswitch n { case 1: ...; default: ... }
Switch z zakresemcase 1...5: ...
Pętla for-infor i in 0..<10 { ... }
Pętla for-in po tablicyfor item in items { ... }
Pętla whilewhile x < 100 { ... }
Repeat-whilerepeat { ... } while x < 100
Break / continuebreak, continue

Funkcje i domknięcia

Funkcje mają etykietowane parametry; domknięcia to samodzielne bloki kodu.

OperacjaSkładnia
Definicja funkcjifunc add(a: Int, b: Int) -> Int { a + b }
Etykieta zewnętrznafunc greet(to name: String) { ... }
Parametr domyślnyfunc greet(name: String = "World") { ... }
Parametr zmiennej długościfunc sum(_ nums: Int...) -> Int { ... }
Kilka wartości zwracanych (krotka)func bounds() -> (min: Int, max: Int) { ... }
Wyrażenie domknięcialet f = { (x: Int) -> Int in x * x }
Domknięcie końcowe (trailing closure)nums.map { $0 * 2 }
Skrócone argumenty{ $0 + $1 }

Struktury a klasy

Struktury to typy wartościowe (kopiowane); klasy to typy referencyjne (współdzielone).

OperacjaSkładnia
Definicja strukturystruct Point { var x: Int; var y: Int }
Definicja klasyclass Person { var name: String }
Inicjalizator klasyinit(name: String) { self.name = name }
Utworzenie instancjilet p = Point(x: 1, y: 2)
Metoda mutująca strukturymutating func move() { x += 1 }
Metoda klasyfunc greet() { ... }
Dziedziczenie (tylko klasy)class Student: Person { ... }
Właściwość obliczanavar area: Int { width * height }
Składowa statycznastatic let shared = Manager()

Enumy

Enumy grupują powiązane wartości i mogą przenosić powiązane dane.

OperacjaSkładnia
Definicja enumaenum Direction { case north, south }
Użycie przypadkulet d = Direction.north
Switch po enumieswitch d { case .north: ... }
Wartości surowe (raw values)enum Status: Int { case ok = 200 }
Dostęp do wartości surowejStatus.ok.rawValue
Inicjalizacja z wartości surowejStatus(rawValue: 200)
Wartości powiązanecase result(Int, String)
Metody w enumachfunc label() -> String { ... }

Najczęściej używana składnia Swifta na jednej stronie. Ten Swift cheat sheet to szybka ściąga z rdzenia języka: stałe i zmienne, opcjonale, stringi, kolekcje, instrukcje sterujące, funkcje i domknięcia, a do tego struktury, klasy i enumy, z których budujesz aplikacje na iOS i macOS.

Wszystko tutaj to standardowy Swift, który kompiluje się oficjalnym toolchainem. Skopiuj to, czego potrzebujesz, albo uruchom każdy fragment w edytorze online Swifta, bez Xcode.

Swift cheat sheet: FAQ

Czy ten Swift cheat sheet jest darmowy?
Tak. Ten Swift cheat sheet jest całkowicie darmowy i nie wymaga rejestracji. Dodaj go do zakładek i wracaj, gdy potrzebujesz sprawdzić wzorzec z opcjonalem, składnię domknięcia albo metodę kolekcji.
Jak rozpakować opcjonal w Swift?
Opcjonal może zawierać wartość albo nil, więc przed użyciem trzeba go rozpakować. Bezpieczne sposoby to wiązanie opcjonala (if let n = name { ... }), guard let na początku funkcji, operator nil-coalescing (name ?? "default") i optional chaining (user?.name). Wymuszone rozpakowanie przez name! działa, ale powoduje awarię, gdy wartość to nil, więc sięgaj po nie tylko wtedy, gdy masz pewność.
Czym różni się struktura od klasy w Swift?
struct to typ wartościowy: przypisanie lub przekazanie tworzy kopię, więc zmiany nie wpływają na oryginał. class to typ referencyjny: kopie współdzielą tę samą instancję, a dziedziczenie obsługują tylko klasy. Apple zaleca domyślnie wybierać struktury, a klasy stosować, gdy potrzebujesz współdzielonego, zmiennego stanu albo dziedziczenia.
Czy mogę ćwiczyć Swifta online?
Tak. Otwórz edytor online Swifta, aby uruchomić dowolny fragment z tej ściągi w przeglądarce, bez instalowania Xcode. Gdy chcesz nauki krok po kroku, darmowy interaktywny kurs Swifta w Coddy przeprowadzi cię od opcjonali i kolekcji do struktur, klas i enumów.
Czy ta ściąga nadaje się dla początkujących?
Tak. Jest uporządkowana od najczęstszych tematów (zmienne, opcjonale, instrukcje sterujące) do bardziej zaawansowanych (domknięcia, struktury a klasy, enumy), więc górne sekcje przydadzą się od pierwszego dnia, a resztę opanujesz z czasem.
Ilustracja języków programowania w Coddy

Naucz się języka Swift z Coddy

ZACZNIJ