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



Alles, was Sie über Swift 6 und SwiftUI wissen müssen!

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