Kofler | Swift | E-Book | 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 und
arbeitet 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.