EMZETT.
Login

Kurz: - The Swift Programming Language (docs.swift.org, kostenlos), swift.org, hackingwithswift.com - Apples Tutorials Develop in Swift und SwiftUI-Tutorials; Stanford-Kurs CS193p - Übungen.

Teil des Kurses Swift

Kapitel 8 von 8 im Kurs Swift (Abschnitt „Nachschlagen“). Mit Fortschritt, Quiz und Zertifikat auf der Lernseite.

Syntax im Überblick

let konstante = 1        var variable: Int = 2        let (a, b) = (1, 2)
func f(label param: Int = 0) -> Int { return param }     f(label: 3)
if cond { } else if { } else { }     guard cond else { return }     switch x { case 1, 2: ...; default: ... }
for i in 0..<n { }       for (i, x) in arr.enumerated() { }     while c { }     repeat { } while c
let o: Int? = nil        if let v = o { }       o ?? 0       o?.description       o!
struct S { var a = 0; mutating func m() { } }     class C: Basis { override func f() { } }
enum E { case a, b(Int) }     protocol P { func f() }     extension T: P { }
func g<T: Comparable>(_ x: T) { }     enum Err: Error { case x }     func h() throws { }     do { try h() } catch { }

Standardbibliothek

GebietWichtige Namen
Zahlenabs min max pow sqrt round floor ceil isMultiple(of:) (Foundation)
Stringscount uppercased lowercased hasPrefix contains split joined replacingOccurrences trimmingCharacters
Arrayappend insert remove sort sorted map filter reduce first last contains firstIndex joined
Dictionary[k], [k, default:], keys, values, mapValues, Dictionary(grouping:by:)
Setinsert contains union intersection subtracting
Fehlerthrow try try? try! do catch Result defer
Nebenläufigkeitasync await Task actor TaskGroup async let
DatenCodable JSONEncoder JSONDecoder Data Date URL FileManager

Swift im Vergleich

ThemaSwift
nullgibt es nicht: Optional (T?)
Fehlerthrows/try, keine Exceptions im Java-Sinn
SpeicherARC, kein Garbage Collector
Typenstatisch, stark, mit Inferenz
Werte vs. Referenzenstruct/enum sind Werte, class Referenzen
StringsUnicode-korrekt; Indizierung über String.Index statt Ganzzahl

Häufige Fehler

Meldung / ProblemUrsache
Value of optional type must be unwrappedOptional nicht ausgepackt: if let, ??
Fatal error: Unexpectedly found nil! auf nil: Optional-Chaining nutzen
Cannot assign to value: 'x' is a 'let' constantlet statt var
Binary operator '+' cannot be applied to 'Int' and 'Double'Typen explizit umwandeln: Double(i)
Switch must be exhaustivefehlende Fälle oder default ergänzen
Cannot use mutating member on immutable valueVariable mit var deklarieren
Cannot find 'sqrt' in scopeimport Foundation fehlt
String index is out of bounds / kein s[0]Strings über s.index(...) oder Array(s) ansprechen
Retain Cycle / Speicherleck[weak self] in Closures, weak für Rückverweise

Weiterlernen

  • The Swift Programming Language (docs.swift.org, kostenlos), swift.org, hackingwithswift.com
  • Apples Tutorials Develop in Swift und SwiftUI-Tutorials; Stanford-Kurs CS193p
  • Übungen: Exercism (Swift-Track), Advent of Code in Swift
  • Wiki dieser Seite: Artikel zu mobilen Apps und Programmierparadigmen

Merke

  • Optionals, Werttypen und Protokolle machen Swift-Code sicher und ausdrucksstark
  • struct bevorzugen, guard für frühe Ausstiege, if let zum Auspacken
  • async/await und actor für Nebenläufigkeit, SwiftUI für Oberflächen

Quiz zur Selbstkontrolle

Weiter im Kurs

Zurück: Projekte: Praxisbeispiele

Alle Kapitel: Swift im Überblick