E-Book, Deutsch, 729 Seiten
Reihe: Rheinwerk Computing
Kofler Swift
5. Auflage 2025
ISBN: 978-3-367-10736-0
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 0 - No protection
Das umfassende Handbuch
E-Book, Deutsch, 729 Seiten
Reihe: Rheinwerk Computing
ISBN: 978-3-367-10736-0
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 0 - No protection
Mit Swift und SwiftUI erstellen Sie professionelle und moderne Apps für macOS und iOS. Wie das geht, zeigt Ihnen Michael Kofler in diesem vollständig neu konzipierten Swift-Handbuch. Von den ersten Zeilen in Xcode über das Design Ihrer neuen App mit SwiftUI bis zur Veröffentlichung im App-Store lernen Sie alle Schritte der Anwendungsentwicklung kennen und machen sich mit den neuen Features von Swift 6 vertraut. Ideal für das Selbststudium und den Unterricht.
Aus dem Inhalt:
- Crashkurs Xcode
- Schleifen, Funktionen und Closures
- Strukturen, Klassen und Protokolle
- Views anwenden und selbst programmieren
- App-Design und Animation
- Data Binding, SwiftData und iCloud
- Internationalisierung und App Store
Die Fachpresse zur Vorauflage:
Mac Life: »Wer Apps mit Swift programmieren möchte, erhält mit diesem Wälzer einen soliden Helfer.«
Michael Kofler hat Telematik an der TU Graz studiert und ist einer der erfolgreichsten deutschsprachigen IT-Fachbuchautoren. Zu seinen Themengebieten zählen neben Linux auch IT-Sicherheit, Python, Swift, Java und der Raspberry Pi. Er ist Entwickler, berät Firmen und arbeitet als Lehrbeauftragter.
Autoren/Hrsg.
Weitere Infos & Material
Vorwort ... 13
Teil I. Einführung ... 17
1. Hello, World! ... 19
1.1 ... Erste Schritte mit Xcode ... 20
1.2 ... Der Hello-World-Code ... 24
1.3 ... Eigene Code-Experimente ... 28
2. Learning by Doing: Die erste App ... 31
2.1 ... Schritt 1: Eine Liste mit den Buchtiteln ... 33
2.2 ... Schritt 2: Gestaltung der Listenelemente ... 45
2.3 ... Schritt 3: Bücher nach Sprachen gruppieren ... 55
2.4 ... Schritt 4: Von der Liste zur Detailansicht ... 58
2.5 ... Schritt 5: Die RatingView ... 63
2.6 ... Schritt 6: Multiplatform- und Farb-Finetuning ... 70
2.7 ... Schritt 7: Persistenz mit SwiftData ... 74
3. Tipps & Tricks ... 81
3.1 ... Syntaxeigenheiten von Swift ... 82
3.2 ... Coding mit KI-Unterstützung ... 87
3.3 ... Xcode ... 90
Teil II. Swift ... 101
4. Variablen, Optionals und Datentypen ... 103
4.1 ... Variablen und Konstanten ... 103
4.2 ... Optionals ... 107
4.3 ... Elementare Datentypen ... 111
4.4 ... Zeichenketten ... 115
4.5 ... Wert- versus Referenztypen ... 122
5. Operatoren ... 125
5.1 ... Zuweisungs- und Rechenoperatoren ... 125
5.2 ... Vergleichsoperatoren und logische Operatoren ... 128
5.3 ... Range-Operatoren ... 131
5.4 ... Operatoren für Fortgeschrittene ... 132
6. Verzweigungen und Schleifen ... 135
6.1 ... Verzweigungen mit if ... 135
6.2 ... Inverse Logik mit guard ... 138
6.3 ... Verzweigungen mit switch ... 139
6.4 ... Versions- oder plattformabhängiger Code ... 141
6.5 ... Schleifen ... 142
7. Funktionen und Closures ... 149
7.1 ... Funktionen definieren und ausführen ... 149
7.2 ... Parameter ... 157
7.3 ... Standardfunktionen ... 164
7.4 ... Funktionen als eigener Datentyp ... 166
7.5 ... Closures ... 168
8. Arrays, Dictionaries, Sets und Tupel ... 173
8.1 ... Arrays ... 173
8.2 ... Arrays und Aufzählungen verarbeiten ... 180
8.3 ... Dictionaries ... 187
8.4 ... Sets ... 189
8.5 ... Tupel ... 191
9. Grundlagen der objektorientierten Programmierung ... 193
9.1 ... Klassen und Strukturen ... 193
9.2 ... Enumerationen ... 201
9.3 ... Eigenschaften ... 204
9.4 ... Init-Funktion ... 213
9.5 ... Methoden ... 219
9.6 ... Subscripts ... 225
9.7 ... Typ-Aliasse ... 227
10. Objektorientierte Programmierung für Fortgeschrittene ... 229
10.1 ... Vererbung ... 229
10.2 ... Generics ... 239
10.3 ... Protokolle ... 242
10.4 ... Standardprotokolle ... 251
10.5 ... Extensions ... 256
10.6 ... Protokollerweiterungen ... 258
11. Fehlerabsicherung ... 263
11.1 ... Fehlerabsicherung mit try und catch ... 263
11.2 ... Selbst Fehler auslösen (throws und throw) ... 270
11.3 ... Fehler in Funktionen weitergeben (rethrows) ... 273
11.4 ... Das Error-Protokoll ... 275
12. Swift-Interna ... 277
12.1 ... Speicherverwaltung ... 277
12.2 ... Attribute, Property Wrapper und Makros ... 282
12.3 ... Reflection und KeyPath-Ausdrücke ... 286
12.4 ... Swift Package Manager ... 290
Teil III. SwiftUI ... 293
13. Views ... 295
13.1 ... Grundlagen ... 297
13.2 ... Text ... 307
13.3 ... Buttons und Optionen ... 312
13.4 ... Bitmaps und Icons (Image) ... 317
13.5 ... Grafik (Canvas, Path und Shape) ... 321
13.6 ... Container (Stack, ScrollView, Grid) ... 323
13.7 ... Farbe, Datum und Uhrzeit auswählen (Date- und ColorPicker) ... 330
13.8 ... Ereignisse (Gestures) ... 333
13.9 ... Vorschau (Preview-Optionen) ... 336
13.10 ... Apps auf dem eigenen iPhone ausführen ... 340
14. State, Binding und Observable ... 343
14.1 ... Variablen synchronisieren (@State und @Binding) ... 343
14.2 ... Umgebungsvariablen (@Environment) ... 352
14.3 ... Fokus-Management (@FocusState) ... 354
14.4 ... Instanzen von Klassen beobachten (@Observable) ... 355
14.5 ... Model-View-ViewModel (MVVM) ... 362
14.6 ... Code-Organisation nach MVVM-Regeln ... 364
15. Listen und Tabellen ... 373
15.1 ... Listen ... 373
15.2 ... Listen manipulieren ... 379
15.3 ... Beispiel: Issue-Management ... 382
15.4 ... Tabellen ... 392
16. Navigation ... 399
16.1 ... NavigationStack ... 399
16.2 ... Navigation entlang eines Pfads ... 402
16.3 ... Deep Links ... 407
16.4 ... NavigationSplitView ... 414
16.5 ... TabView ... 419
16.6 ... Toolbar ... 421
16.7 ... Modale Dialoge (Alerts, Sheets, Popovers) ... 424
16.8 ... Best Practices ... 428
17. SwiftUI-Spezialthemen ... 431
17.1 ... Animationen ... 432
17.2 ... Einstellungen (User-Defaults, @AppStorage) ... 437
17.3 ... macOS-App mit mehreren Fenstern (FileDocuments) ... 440
17.4 ... Eigene View-Modifier ... 448
17.5 ... UIKit-Views in SwiftUI verwenden ... 452
17.6 ... Capabilities und Entitlements ... 458
Teil IV. Programmier- und Arbeitstechniken ... 461
18. Asynchrone Programmierung ... 463
18.1 ... Tasks, async und await ... 465
18.2 ... actor und Sendable ... 473
18.3 ... Asynchrone Programmierung in SwiftUI ... 480
18.4 ... Beispiel: Asynchroner Download ... 484
18.5 ... Beispiel: Datenauswertung und -visualisierung ... 491
19. Dateien, JSON und XML ... 499
19.1 ... Dateinamen und URLs ... 500
19.2 ... Standardverzeichnisse ... 501
19.3 ... Dateioperationen ... 506
19.4 ... Bundle-Dateien und Assets ... 510
19.5 ... JSON-Dateien verarbeiten ... 512
19.6 ... XML-Dateien lesen ... 519
20. Netzwerkfunktionen und REST-APIs ... 525
20.1 ... Dateien herunterladen ... 526
20.2 ... REST-APIs nutzen ... 528
20.3 ... Beispiel: Aktuelles Wetter ermitteln ... 531
20.4 ... Beispiel: New-York-Times-Bestsellerliste ... 534
21. SwiftData ... 541
21.1 ... Persistenz ... 541
21.2 ... SwiftData-Überblick ... 543
21.3 ... Modellierung (Schema) ... 545
21.4 ... Container ... 549
21.5 ... Daten lesen und speichern (Kontext) ... 550
21.6 ... Relationen ... 554
21.7 ... SwiftData-Interna ... 559
21.8 ... Beispiel: To-do-App ... 564
21.9 ... Undo-Funktion für die To-do-App ... 574
22. iCloud ... 581
22.1 ... iCloud-Grundlagen ... 581
22.2 ... Hello, iCloud! ... 583
22.3 ... SwiftData und iCloud ... 592
Teil V Apps ... 597
23. Währungskalkulator ... 599
23.1 ... App-Überblick ... 599
23.2 ... Umrechnungskurse herunterladen und speichern (Model) ... 602
23.3 ... UI-Logik (View Model) ... 606
23.4 ... Benutzeroberfläche (View) ... 612
23.5 ... Währungseinstellung (View) ... 616
24. Lokalisierung und App Store ... 623
24.1 ... Artwork ... 623
24.2 ... Mehrsprachige Apps ... 626
24.3 ... Eigene Apps im App Store anbieten ... 637
24.4 ... macOS-Programme selbst weitergeben ... 647
25. Familieneinkaufsliste ... 653
25.1 ... Bedienung ... 654
25.2 ... Software-Design ... 658
25.3 ... Einkaufsliste und Kategorien (Model) ... 666
25.4 ... UI-Logik (View Model) ... 671
25.5 ... Grundaufbau der Benutzeroberfläche (ContentView) ... 675
25.6 ... Shopping-Tab (View) ... 678
25.7 ... Planungs-Tab (View) ... 685
25.8 ... Settings-Tab (View) ... 689
25.9 ... REST-Server-Implementierung mit Python ... 693
25.10 ... REST-Client in Swift (View Model) ... 706
Index ... 717
1 Hello, World!
In diesem Kapitel geht es darum, dass Sie Ihr Arbeitswerkzeug – also Xcode – kennenlernen. Ich gebe Ihnen einen Überblick über die wichtigsten Bestandteile der komplexen Oberfläche und zeige Ihnen, aus welchen Dateien sich ein einfaches SwiftUI-Projekt zusammensetzt.
Xcode ist kostenlos. Einen Apple Developer Account (aktuell 120 €/Jahr) brauchen Sie erst, wenn Sie selbst programmierte iCloud-Funktionen testen oder Apps über den App Store weitergeben oder verkaufen möchten.
Hardware-Voraussetzungen
Teuer ist die App-Entwicklung leider trotzdem – Sie brauchen nämlich angemessene Hardware. Grundsätzlich läuft Xcode auf jedem Mac, auch auf einem alten MacBook Air mit nur 8 GB RAM. Verwenden Sie unbedingt ein Gerät mit M-Prozessor (Apple Silicon); Geräte mit Intel-CPU, die im Gebrauchtmarkt günstig angeboten werden, sind für die moderne App-Entwicklung ungeeignet und haben keine Zukunft.
Mit der Ausführung von Xcode ist es nicht getan. Während der Entwicklung von Apps brauchen Sie einen Simulator (wird mit Xcode mitgeliefert), um dort ein iPhone oder iPad als virtuelle Testumgebung auszuführen. Xcode plus Simulator sprengen die 8-GB-Grenze bereits.
Ich habe für dieses Buch mit einem MacBook Pro mit 36 GB RAM gearbeitet. So viel muss es nicht sein, aber ich rate Ihnen dringend zu einem Rechner mit zumindest 24 GB RAM. Alle anderen Eckdaten sind nicht so wichtig. Es muss weder die neueste noch die schnellste CPU sein. Auch die Größe der SSD ist sekundär. Rechnen Sie großzügig mit 100 GByte für Xcode, diverse iOS-Simulatordateien sowie Build-Dateien für eigene Projekte. (Anfangs ist der Platzbedarf deutlich kleiner, aber mit der Zeit sammeln sich immer mehr Build-Dateien und iOS-Simulatoren an. Räumen Sie hin und wieder auf! Tipps dazu folgen im Abschnitt 3.3, »Xcode«.)
Zu guter Letzt: Verwenden Sie einen großen Monitor. Es muss kein Studio Display sein, ein 4k-Monitor für 200 € reicht absolut aus.
1.1 Erste Schritte mit Xcode
Sofern Sie Xcode noch nicht installiert haben, finden Sie das Programm kostenlos im App Store. Von dort erhalten Sie allerdings nur die Grundkomponenten. Beim ersten Start fragt Xcode, welche Simulatordateien es herunterladen soll. Diese Dateien sind notwendig, damit Xcode Ihren Code in einem simulierten iPhone oder iPad ausführen kann. Der iOS-Simulator (immerhin ein weiterer Download im Umfang von ca. 8 GB) reicht aus. Auf tvOS, watchOS etc. gehe ich in diesem Buch nicht ein.
Mit File • New • Project starten Sie nun Ihr erstes Projekt. Im ersten Dialog haben Sie die Auswahl zwischen verschiedenen Vorlagen. Für die meisten Projekte in diesem Buch ist Multiplatform • App die richtige Wahl (siehe Abbildung 1.1). Das sind SwiftUI-Programme, die auf mehreren Betriebssystemen (iOS, macOS) laufen. Für Teil II des Buchs ist auch macOS • Command Line Tool eine gute Alternative. Damit können Sie Swift-Sprachmerkmale ohne den Overhead einer grafischen Benutzeroberfläche ausprobieren.
Abbildung 1.1 Multiplatform-Apps benutzen SwiftUI und sind auf diversen Apple-Betriebssystemen ausführbar.
Im zweiten Schritt geben Sie Ihrem Projekt einen Namen (siehe .
Abbildung 1.2 Einstellung des Projektnamens
Als Organization Identifier verwenden Sie – falls vorhanden – Ihren Domain-Namen oder den Ihrer Firma/Organisation/Universität in umgekehrter Reihenfolge (also com.example für die Domain example.com). Xcode setzt aus diesen Namen den Bundle Identifier zusammen. Wenn Sie irgendwann Ihre erste App in den App Store stellen, muss dieser Identifier weltweit eindeutig sein. Wir brauchen für unsere ersten Experimente weder ein Testing System noch ein Backend für Storage.
Zuletzt müssen Sie angeben, in welchem Verzeichnis Sie Ihr Projekt speichern möchten (siehe Abbildung 1.3). Xcode erzeugt dort wiederum ein Unterverzeichnis mit dem Projektnamen. Standardmäßig ist in diesem Dialog die Option Create Git repository on my Mac aktiviert. Selbst wenn Sie das Versionsverwaltungsprogramm Git (siehe auch Abschnitt 3.3, »Xcode«) nicht verwenden möchten, können Sie die Option belassen. Das vorerst leere Git-Verzeichnis kostet kaum Speicherplatz und gibt Ihnen später die Möglichkeit, Git jederzeit zu nutzen.
Abbildung 1.3 Speicherort für das Projekt
1.1.1 Die Oberfläche von Xcode
Der Button Create erzeugt endlich Ihr Projekt. Es besteht selbst in dieser Minimalvariante aus mehreren Dateien, deren Funktion ich Ihnen gleich erläutere. In Xcode ist automatisch die Datei ContentView.swift des neuen Projekts geöffnet. (Wenn nicht, öffnen Sie die Datei durch einen Doppelklick im Project Explorer, also im ersten Tab der linken Seitenleiste.) Neben dem Code wird eine Voransicht der App angezeigt (siehe Abbildung 1.4). Aus Effizienzgründen ist als Preview-Gerät normalerweise macOS eingestellt. Zumeist wollen Sie aber wissen, wie Ihre App auf einem iPhone aussieht. Stellen Sie einfach das gewünschte Preview-Gerät ein. (Xcode muss hinter den Kulissen den iOS-Simulator laden, was beim ersten Mal etwas Zeit kostet.)
Abbildung 1.4 Xcode setzt sich aus zahlreichen Teilfenstern zusammen, die ein- und ausgeblendet werden können.
Abbildung 1.5 Hier laufen zwei Instanzen des Hello-World-Programms:
eine im iPad-Simulator, die zweite nativ als macOS-Programm.
Während der App-Entwicklung ist die Preview-Ansicht für die meisten Arbeitsschritte ausreichend. Hin und wieder müssen Sie Ihr Programm aber direkt im iPhone- oder iPad-Simulator ausführen. Dazu wählen Sie in der Fensterleiste das gewünschte Gerät aus und drücken dann auf den Start-Button. Nach ein paar Sekunden erscheint das Programm im Simulator oder als macOS-Fenster (siehe Abbildung 1.5).
Xcode zeichnet sich durch eine fast unüberschaubare Fülle von Funktionen aus. Das liegt daran, dass Xcode die Entwicklungsumgebung von Apple ist, mit der die Firma alle eigenen Software-Produkte entwickelt. Xcode ist insofern ein echtes Profi-Tool. Das macht die ersten Schritte mit Xcode leider etwas mühsam. Beim Design von Xcode stand eine einfache Bedienung offenbar etwas weiter unten in der Prioritätenliste. Anfangs fällt nicht nur die Orientierung in Xcode schwer, auch das Verhalten bei den kleinsten Fehlern ist mühsam: Xcode zeigt zwar eine Fehlermeldung an, diese ist aber nur in Ausnahmefällen hilfreich. Sie müssen die Ursache des Problems selbst mit Intuition und Hilfe aus dem Internet oder von KI-Tools suchen und den Fehler beheben.
Lassen Sie sich während der ersten Tage mit Xcode nicht entmutigen! Es dauert ein paar Tage, sich an die wesentlichsten Eigenheiten von Xcode zu gewöhnen. Danach kann man mit der Entwicklungsumgebung durchaus gut arbeiten. (Ich will aber nicht verschweigen, dass mich das Programm auch nach jahrelanger Arbeit manchmal zur Weißglut bringt.) Werfen Sie auch einen Blick in Abschnitt 3.3, »Xcode«, wo ich eine Sammlung von Tipps & Tricks für den Umgang mit Xcode zusammengefasst habe. Dort finden Sie auch einen Überblick über die wichtigsten Tastenkürzel.
Vorerst ist es wichtig, dass Sie mit den Grundfunktionen des Programms vertraut werden. Es gibt drei Seitenleisten, die jeweils ein- und ausgeblendet werden können:
-
Navigator: Die linke Seitenleiste beinhaltet diverse Navigatoren. Sie helfen dabei, Dateien zu öffnen, zu einem Fehler zu springen etc.
-
Eigenschaften: In der rechten Seitenleiste verbergen sich mehrere Tabs zur Einstellung aller möglichen Eigenschaften des ganzen Projekts, einer Datei, eines Elements der Oberfläche usw.
-
Debugging: In der unteren Seitenleiste finden Sie die Ausgaben Ihrer Programme inklusive aller print-Anweisungen.
-
Code und Preview: Im Zentrum der Oberfläche steht die gerade offene Code-Datei. Bei SwiftUI-Dateien wird daneben eine Vorschau angezeigt. Die Vorschau friert ein (Preview paused), sobald Sie das Programm in einem Simulator starten, wenn der Code einen Fehler enthält oder wenn sich Xcode sonst überfordert fühlt. In diesem Fall müssen Sie die Vorschau mit einem Klick auf den Refresh-Button neu starten.
1.1.2 Swift 6 aktivieren
Zumindest bis zum Frühjahr 2025 (Xcode Version 16.3) verwenden neue Projekte standardmäßig Swift 5. Das klingt absurd: Swift 6 wurde schon ein ganzes Jahr vorher bei der WWDC 2024 präsentiert und wird seit Herbst 2024 offiziell ausgeliefert.
Grundsätzlich sind die Unterschiede zwischen der letzten Swift-5-Version (das war 5.10, Release im März 2024) und den Versionen 6.0 bzw. 6.1 gering (Oktober...




