Kofler | Swift | E-Book | www.sack.de
E-Book

E-Book, Deutsch, 729 Seiten

Reihe: Rheinwerk Computing

Kofler Swift

Das umfassende Handbuch
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.
Kofler Swift jetzt bestellen!

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...


Kofler, Michael
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 undarbeitet als Lehrbeauftragter.



Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.