Swift 5

Inhaltsverzeichnis



  Vorwort ... 17

TEIL I  Swift ... 21

  1.  Hello World! ... 23

       1.1 ... »Hello World« im Playground ... 23

       1.2 ... »Hello World« als Terminal-App ... 32

  2.  Swift-Crashkurs ... 41

       2.1 ... Elementare Syntaxregeln und Kommentare ... 41

       2.2 ... Variablen, Konstanten und Datentypen ... 46

       2.3 ... Strukturierung des Codes ... 50

       2.4 ... Klassen und Datenstrukturen ... 54

       2.5 ... Fehlerabsicherung ... 56

       2.6 ... Xcode-Crashkurs ... 58

  3.  Operatoren ... 69

       3.1 ... Zuweisungs- und Rechenoperatoren ... 69

       3.2 ... Vergleichsoperatoren und logische Operatoren ... 74

       3.3 ... Range-Operatoren ... 78

       3.4 ... Operatoren für Fortgeschrittene ... 82

       3.5 ... Eigene Operatoren ... 85

  4.  Variablen und Optionals ... 89

       4.1 ... Variablen und Konstanten ... 89

       4.2 ... Optionals ... 95

       4.3 ... Wert- versus Referenztypen ... 100

  5.  Verzweigungen und Schleifen ... 103

       5.1 ... Verzweigungen mit if ... 103

       5.2 ... Inverse Logik mit guard ... 106

       5.3 ... Verzweigungen mit switch ... 108

       5.4 ... Versions- oder plattformabhängiger Code ... 111

       5.5 ... Schleifen ... 112

       5.6 ... Nicht triviale Schleifen ... 117

  6.  Funktionen und Closures ... 123

       6.1 ... Funktionen definieren und ausführen ... 123

       6.2 ... Parameter ... 134

       6.3 ... Standardfunktionen ... 141

       6.4 ... Funktionale Programmierung ... 145

       6.5 ... Closures ... 150

  7.  Zahlen und geometrische Strukturen ... 161

       7.1 ... Zahlen und boolesche Werte ... 161

       7.2 ... NSNumber ... 166

       7.3 ... CGFloat, CGPoint, CGSize und Co. ... 167

  8.  Zeichenketten ... 173

       8.1 ... Syntax ... 173

       8.2 ... Bearbeitung von Zeichenketten ... 179

       8.3 ... Suchen und ersetzen ... 183

       8.4 ... Zeichenketten zerlegen und zusammensetzen ... 186

       8.5 ... Zeichenketten und Zahlen umwandeln ... 192

       8.6 ... Zeichenketten und binäre Daten umwandeln (Data-Struktur) ... 195

  9.  Datum und Uhrzeit ... 197

       9.1 ... Datum und Uhrzeit ermitteln und darstellen ... 197

       9.2 ... Rechnen mit Datum und Uhrzeit ... 199

10.  Arrays, Dictionaries, Sets und Tupel ... 201

       10.1 ... Arrays ... 201

       10.2 ... Arrays und Aufzählungen verarbeiten ... 211

       10.3 ... Dictionaries ... 221

       10.4 ... Sets ... 225

       10.5 ... Option-Sets ... 226

       10.6 ... Tupel ... 228

       10.7 ... Lottosimulator ... 230

11.  Objektorientierte Programmierung I ... 235

       11.1 ... Klassen und Strukturen ... 236

       11.2 ... Enumerationen ... 244

       11.3 ... Eigenschaften ... 251

       11.4 ... Init- und Deinit-Funktion ... 263

       11.5 ... Methoden ... 269

       11.6 ... Subscripts ... 276

       11.7 ... Typ-Aliasse ... 279

       11.8 ... Speicherverwaltung ... 279

12.  Objektorientierte Programmierung II ... 285

       12.1 ... Vererbung ... 285

       12.2 ... Generics ... 297

       12.3 ... Protokolle ... 302

       12.4 ... Standardprotokolle ... 312

       12.5 ... Extensions ... 320

       12.6 ... Protokollerweiterungen ... 325

       12.7 ... Reflection und Metatypen ... 328

13.  Fehlerabsicherung ... 335

       13.1 ... Fehlerabsicherung mit try und catch ... 335

       13.2 ... Selbst Fehler auslösen (throws und throw) ... 344

       13.3 ... Fehler in Funktionen weitergeben (rethrows) ... 348

       13.4 ... Das Error-Protokoll ... 351

       13.5 ... Fehlerabsicherung von API-Methoden (NSError) ... 353

       13.6 ... Result-Datentyp ... 355

14.  Importe, Attribute und Systemfunktionen ... 361

       14.1 ... Module, Frameworks und Importe ... 361

       14.2 ... Attribute ... 365

       14.3 ... Systemfunktionen aufrufen ... 367

TEIL II  App-Programmierung ... 373

15.  Hello iOS-World! ... 375

       15.1 ... Projektstart ... 376

       15.2 ... Gestaltung der App ... 377

       15.3 ... Steuerung der App durch Code ... 381

       15.4 ... Actions und Outlets für Fortgeschrittene ... 386

       15.5 ... Layout optimieren ... 389

       15.6 ... Textgröße mit einem Slider einstellen ... 394

       15.7 ... Apps auf dem eigenen iPhone oder iPad ausführen ... 396

       15.8 ... Komponenten und Dateien eines Xcode-Projekts ... 399

16.  iOS-Grundlagen ... 401

       16.1 ... Model-View-Controller (MVC) ... 401

       16.2 ... Klassenhierarchie einer App-Ansicht ... 405

       16.3 ... Die UIViewController-Klasse ... 407

       16.4 ... Phasen einer iOS-App ... 411

       16.5 ... Auto Layout ... 414

       16.6 ... Layoutregeln durch Code definieren ... 429

       16.7 ... Steuerelemente in einer Stack-View anordnen ... 431

       16.8 ... Layoutvarianten ... 435

       16.9 ... Texteingaben ... 442

       16.10 ... Image-Views und Xcassets ... 450

17.  iOS-Apps mit mehreren Ansichten ... 453

       17.1 ... Storyboard und Controller-Klassen verbinden ... 453

       17.2 ... Ansichten durch Segues verbinden ... 454

       17.3 ... Segues mit Datenübertragung ... 459

       17.4 ... Navigation-Controller ... 464

       17.5 ... Tab-Bar-Controller ... 469

       17.6 ... Split-View-Controller ... 475

       17.7 ... Popups ... 485

       17.8 ... Ja/Nein-Dialoge (UIAlertController) ... 496

18.  Hello macOS-World! ... 499

       18.1 ... Lottozahlengenerator ... 500

19.  macOS-Grundlagen ... 509

       19.1 ... Programme mit mehreren Fenstern ... 509

       19.2 ... Tab-View-Controller ... 516

       19.3 ... Standarddialoge ... 523

       19.4 ... Tastatur ... 528

       19.5 ... Menüs ... 533

       19.6 ... Programme ohne Menü ... 542

       19.7 ... Dunkles Erscheinungsbild (»Dark Mode«) ... 544

20.  tvOS ... 547

       20.1 ... Hello tvOS! ... 548

       20.2 ... Fernbedienung auswerten ... 552

       20.3 ... Focus Engine ... 558

TEIL III  Programmier- und Arbeitstechniken ... 565

21.  Dateien und User-Defaults ... 567

       21.1 ... User-Defaults ... 567

       21.2 ... Dateinamen und URLs ... 571

       21.3 ... Bundle-Dateien und Assets ... 573

       21.4 ... Standardverzeichnisse ... 575

       21.5 ... Dateioperationen ... 580

       21.6 ... Wie geht's weiter? ... 587

22.  Netzwerk, XML und JSON ... 589

       22.1 ... Dateien per HTTP/HTTPS laden ... 589

       22.2 ... XML-Dokumente auswerten ... 597

       22.3 ... JSON-Encoder und -Decoder ... 601

       22.4 ... Webseiten anzeigen ... 608

23.  Tabellen und Listen darstellen ... 615

       23.1 ... Listen in iOS-Apps (UITableView) ... 615

       23.2 ... Prototypzellen ... 621

       23.3 ... Individuelle Gestaltung von Listenzellen ... 626

       23.4 ... Veränderliche Listen ... 632

       23.5 ... Tabellen in macOS-Apps (NSTableView) ... 634

       23.6 ... Collections asynchron füllen (UICollectionView) ... 645

24.  GPS- und Kompassfunktionen ... 653

       24.1 ... Hello Map-View! ... 653

       24.2 ... Wegstrecke aufzeichnen ... 658

       24.3 ... Kompassfunktionen ... 665

25.  Grafik und Animation ... 667

       25.1 ... Eigene Steuerelemente mit Grafikfunktionen ... 667

       25.2 ... Kompass-Steuerelement ... 673

       25.3 ... Core Graphics ... 682

       25.4 ... Animationen ... 685

26.  Touch, Maus, Gestures und Drag & Drop ... 691

       26.1 ... Touch ... 691

       26.2 ... Maus ... 698

       26.3 ... Gestures ... 705

       26.4 ... Drag & Drop (macOS) ... 708

       26.5 ... Drag & Drop (iOS) ... 721

27.  Audio, Video und Fotos ... 735

       27.1 ... Audiowiedergabe mit dem AVAudioPlayer ... 735

       27.2 ... Audiowiedergabe mit dem AVPlayer ... 745

       27.3 ... Audiowiedergabe mit dem AVPlayerViewController ... 747

       27.4 ... Audioaufnahmen mit dem AVAudioRecorder durchführen ... 749

       27.5 ... Videos abspielen ... 754

       27.6 ... Videos mit der Picker-View auswählen und aufnehmen ... 757

       27.7 ... YouTube-Videos abspielen ... 761

       27.8 ... Fotos mit der Picker-View auswählen und aufnehmen ... 764

       27.9 ... Fotos in einer AVCaptureSession aufnehmen ... 766

       27.10 ... Barcodes in einer AVCaptureSession erkennen ... 774

28.  SpriteKit ... 779

       28.1 ... Hello SpriteKit! ... 780

       28.2 ... Sprites erzeugen und bewegen ... 789

       28.3 ... Spielsteuerung durch Touch-Ereignisse ... 794

       28.4 ... Bewegungssteuerung (Gyroskop und Accelerometer) ... 800

       28.5 ... Aktionen ... 806

       28.6 ... Der Game-Loop ... 812

       28.7 ... Kollisionserkennung ... 814

       28.8 ... Minispiel: Luftballone abschießen ... 820

       28.9 ... Physik ... 826

       28.10 ... Minispiel: Pyramide zerstören ... 832

       28.11 ... Scene-Editor ... 838

       28.12 ... Partikel-Emitter ... 844

29.  Core Data und SQLite ... 847

       29.1 ... Hello, Core Data! ... 848

       29.2 ... Core-Data-Klassenüberblick ... 853

       29.3 ... Core-Data-Entities verknüpfen (Relationships) ... 855

       29.4 ... Core-Data-Interna ... 865

       29.5 ... SQLite.swift ... 868

30.  iCloud ... 879

       30.1 ... iCloud-Grundlagen ... 879

       30.2 ... Key-Value-Speicher ... 885

       30.3 ... CloudKit-Grundlagen ... 892

       30.4 ... CloudKit-Programmiertechniken ... 899

       30.5 ... CloudKit-Beispiel ... 908

31.  Asynchrone Programmierung ... 921

       31.1 ... Hello Grand Central Dispatch! ... 922

       31.2 ... GCD-Grundlagen ... 925

       31.3 ... Parallel rechnen ... 930

32.  App Store und Co. ... 937

       32.1 ... iOS-Artwork (Icons, Launch Screen) ... 938

       32.2 ... macOS-Artwork (Icon) ... 940

       32.3 ... tvOS-Artwork (Parallax-Icons, Launch und Top Shelf Image) ... 941

       32.4 ... Mehrsprachige Apps ... 947

       32.5 ... Eigene Apps im App Store anbieten ... 961

       32.6 ... macOS-Programme selbst weitergeben ... 970

33.  Xcode-Arbeitstechniken ... 979

       33.1 ... Simulator-Ausgaben stoppen ... 979

       33.2 ... Header-Code einer eigenen Klasse erzeugen ... 980

       33.3 ... Versionsverwaltung mit Git ... 981

       33.4 ... Crashlogs ... 984

       33.5 ... Refactoring ... 984

       33.6 ... Projekte umbenennen ... 986

       33.7 ... Xcode-Verzeichnisse aufräumen ... 986

       33.8 ... Apple Configurator ... 989

34.  Server-side Swift ... 991

       34.1 ... Swift unter Linux ... 994

       34.2 ... Vapor kennenlernen ... 1000

       34.3 ... Die Vapor-Toolbox ... 1010

       34.4 ... Vapor-Grundlagen ... 1012

       34.5 ... Datenbankanbindung mit Fluent ... 1024

       34.6 ... Authentifizierung und Autorisierung ... 1037

       34.7 ... Deployment ... 1045

TEIL IV  Beispielprojekte ... 1051

35.  New-York-Times-Bestseller ... 1053

       35.1 ... New-York-Times-API ... 1055

       35.2 ... Benutzeroberfläche ... 1058

       35.3 ... Split-View-Variante ... 1062

36.  To-do-Listen ... 1067

       36.1 ... Gestaltung der Benutzeroberfläche ... 1068

       36.2 ... Datenmodell ... 1069

       36.3 ... View-Controller-Klasse ... 1070

       36.4 ... Popup-View-Controller-Klasse ... 1077

       36.5 ... iCloud-Variante ... 1078

       36.6 ... Core-Data-Variante ... 1083

       36.7 ... SQLite-Variante ... 1087

37.  Schatzsuche ... 1097

       37.1 ... Aufbau der App ... 1097

       37.2 ... Datenmodell ... 1101

       37.3 ... Location Manager selbst gemacht ... 1104

       37.4 ... Steuerelement zur Richtungsanzeige (UIBezierPath) ... 1108

       37.5 ... Hauptansicht mit Listenfeld ... 1109

       37.6 ... Popup-Dialog zum Speichern ... 1114

       37.7 ... Detailansicht mit Richtungspfeil ... 1115

38.  Währungskalkulator ... 1121

       38.1 ... App-Überblick ... 1121

       38.2 ... Kurse ermitteln ... 1127

       38.3 ... Das Datenmodell der App ... 1129

       38.4 ... Umrechnungsansicht ... 1132

       38.5 ... Einstellungsansicht ... 1138

       38.6 ... Internationalisierung und Lokalisierung ... 1143

39.  Fünf gewinnt ... 1145

       39.1 ... Die App »Fünf gewinnt« ... 1145

       39.2 ... Enumerationen und globale Funktionen (Globals.swift) ... 1148

       39.3 ... Die Spiellogik (FiveWins.swift) ... 1152

       39.4 ... Darstellung des Spielbretts und der Steine (BoardView.swift) ... 1162

       39.5 ... Steuerung des Spielablaufs (ViewController.swift) ... 1171

       39.6 ... Der Popup-Dialog (PopupVC.swift) ... 1176

       39.7 ... Erweiterungsmöglichkeiten ... 1179

40.  Puzzle-App ... 1181

       40.1 ... Programmaufbau ... 1182

       40.2 ... Die Klassen »Tile« und »Puzzle« ... 1185

       40.3 ... Verwaltung der Benutzeroberfläche im View-Controller ... 1190

41.  Icon-Resizer ... 1195

       41.1 ... App-Überblick ... 1195

       41.2 ... Icons verwalten (IconSize-Struktur) ... 1201

       41.3 ... Hauptfenster (ViewController.swift) ... 1206

       41.4 ... Drag-and-Drop-Quelle für Icons (IconCellView.swift) ... 1213

       41.5 ... Drag-and-Drop-Empfänger für Icons (OriginalIconView.swift) ... 1215

       41.6 ... Popup-Menü (IconChoiceVC.swift) ... 1217

       41.7 ... Temporäres Verzeichnis erstellen und löschen ... 1218

42.  Breakout ... 1221

       42.1 ... Programmaufbau ... 1222

       42.2 ... Initialisierung ... 1223

       42.3 ... Spielsteuerung ... 1230

43.  Pac-Man selbst gemacht ... 1233

       43.1 ... Programmaufbau ... 1234

       43.2 ... Der Tile-Editor »Tiled« ... 1235

       43.3 ... Globale Konstanten, Datenstrukturen und Enumerationen ... 1240

       43.4 ... Initialisierung des Spiels ... 1242

       43.5 ... Die Maze-Klasse ... 1245

       43.6 ... Aufbau der Spielszene (setup-Methoden) ... 1249

       43.7 ... Spielsteuerung (touch-Methoden) ... 1255

       43.8 ... Bewegung des Pac-Mans ... 1260

       43.9 ... Steuerung der Monster ... 1264

       43.10 ... Kollisionen ... 1269

       43.11 ... Apple-TV-Variante von Pac-Man ... 1273

       43.12 ... Pac-Man-Figuren zeichnen ... 1277

44.  Asteroids ... 1279

       44.1 ... Programmaufbau ... 1280

       44.2 ... Globale Konstanten und Funktionen ... 1282

       44.3 ... Programmstart und Tastaturereignisse (GameViewController) ... 1282

       44.4 ... Initialisierung des Spiels (GameScene) ... 1285

       44.5 ... Spielablauf (ebenfalls in GameScene) ... 1291

       44.6 ... Fokussierbare Menütexte (MyLabel) ... 1296

       44.7 ... Der Einstellungsdialog (MainScene) ... 1297

  Index ... 1303

Swift 5

Das umfassende Handbuch. Apps entwickeln für iOS, macOS und tvOS. Ideal für Umsteiger von Objective-C.

Buch (Gebundene Ausgabe)

49,90 €

inkl. gesetzl. MwSt.

Swift 5

Ebenfalls verfügbar als:

Gebundenes Buch

Gebundenes Buch

ab 49,90 €
eBook

eBook

ab 49,90 €

Artikel liefern lassen

Beschreibung

Details

Einband

Gebundene Ausgabe

Erscheinungsdatum

28.04.2019

Verlag

Rheinwerk

Seitenzahl

1328

Maße (L/B/H)

24,9/20,7/7,3 cm

Beschreibung

Rezension

»Wer Apps mit Swift programmieren möchte, erhält mit diesem Wälzer einen soliden Helfer.« Mac Life 201911

Details

Einband

Gebundene Ausgabe

Erscheinungsdatum

28.04.2019

Verlag

Rheinwerk

Seitenzahl

1328

Maße (L/B/H)

24,9/20,7/7,3 cm

Gewicht

2583 g

Auflage

4. Auflage

Sprache

Deutsch

ISBN

978-3-8362-6638-3

Weitere Bände von Rheinwerk Computing

Unsere Kundinnen und Kunden meinen

0.0

0 Bewertungen

Informationen zu Bewertungen

Zur Abgabe einer Bewertung ist eine Anmeldung im Konto notwendig. Die Authentizität der Bewertungen wird von uns nicht überprüft. Wir behalten uns vor, Bewertungstexte, die unseren Richtlinien widersprechen, entsprechend zu kürzen oder zu löschen.

Verfassen Sie die erste Bewertung zu diesem Artikel

Helfen Sie anderen Kund*innen durch Ihre Meinung

Erste Bewertung verfassen

Unsere Kundinnen und Kunden meinen

0.0

0 Bewertungen filtern

Weitere Artikel finden Sie in

Die Leseprobe wird geladen.
  • Swift 5


  •   Vorwort ... 17

    TEIL I  Swift ... 21

      1.  Hello World! ... 23

           1.1 ... »Hello World« im Playground ... 23

           1.2 ... »Hello World« als Terminal-App ... 32

      2.  Swift-Crashkurs ... 41

           2.1 ... Elementare Syntaxregeln und Kommentare ... 41

           2.2 ... Variablen, Konstanten und Datentypen ... 46

           2.3 ... Strukturierung des Codes ... 50

           2.4 ... Klassen und Datenstrukturen ... 54

           2.5 ... Fehlerabsicherung ... 56

           2.6 ... Xcode-Crashkurs ... 58

      3.  Operatoren ... 69

           3.1 ... Zuweisungs- und Rechenoperatoren ... 69

           3.2 ... Vergleichsoperatoren und logische Operatoren ... 74

           3.3 ... Range-Operatoren ... 78

           3.4 ... Operatoren für Fortgeschrittene ... 82

           3.5 ... Eigene Operatoren ... 85

      4.  Variablen und Optionals ... 89

           4.1 ... Variablen und Konstanten ... 89

           4.2 ... Optionals ... 95

           4.3 ... Wert- versus Referenztypen ... 100

      5.  Verzweigungen und Schleifen ... 103

           5.1 ... Verzweigungen mit if ... 103

           5.2 ... Inverse Logik mit guard ... 106

           5.3 ... Verzweigungen mit switch ... 108

           5.4 ... Versions- oder plattformabhängiger Code ... 111

           5.5 ... Schleifen ... 112

           5.6 ... Nicht triviale Schleifen ... 117

      6.  Funktionen und Closures ... 123

           6.1 ... Funktionen definieren und ausführen ... 123

           6.2 ... Parameter ... 134

           6.3 ... Standardfunktionen ... 141

           6.4 ... Funktionale Programmierung ... 145

           6.5 ... Closures ... 150

      7.  Zahlen und geometrische Strukturen ... 161

           7.1 ... Zahlen und boolesche Werte ... 161

           7.2 ... NSNumber ... 166

           7.3 ... CGFloat, CGPoint, CGSize und Co. ... 167

      8.  Zeichenketten ... 173

           8.1 ... Syntax ... 173

           8.2 ... Bearbeitung von Zeichenketten ... 179

           8.3 ... Suchen und ersetzen ... 183

           8.4 ... Zeichenketten zerlegen und zusammensetzen ... 186

           8.5 ... Zeichenketten und Zahlen umwandeln ... 192

           8.6 ... Zeichenketten und binäre Daten umwandeln (Data-Struktur) ... 195

      9.  Datum und Uhrzeit ... 197

           9.1 ... Datum und Uhrzeit ermitteln und darstellen ... 197

           9.2 ... Rechnen mit Datum und Uhrzeit ... 199

    10.  Arrays, Dictionaries, Sets und Tupel ... 201

           10.1 ... Arrays ... 201

           10.2 ... Arrays und Aufzählungen verarbeiten ... 211

           10.3 ... Dictionaries ... 221

           10.4 ... Sets ... 225

           10.5 ... Option-Sets ... 226

           10.6 ... Tupel ... 228

           10.7 ... Lottosimulator ... 230

    11.  Objektorientierte Programmierung I ... 235

           11.1 ... Klassen und Strukturen ... 236

           11.2 ... Enumerationen ... 244

           11.3 ... Eigenschaften ... 251

           11.4 ... Init- und Deinit-Funktion ... 263

           11.5 ... Methoden ... 269

           11.6 ... Subscripts ... 276

           11.7 ... Typ-Aliasse ... 279

           11.8 ... Speicherverwaltung ... 279

    12.  Objektorientierte Programmierung II ... 285

           12.1 ... Vererbung ... 285

           12.2 ... Generics ... 297

           12.3 ... Protokolle ... 302

           12.4 ... Standardprotokolle ... 312

           12.5 ... Extensions ... 320

           12.6 ... Protokollerweiterungen ... 325

           12.7 ... Reflection und Metatypen ... 328

    13.  Fehlerabsicherung ... 335

           13.1 ... Fehlerabsicherung mit try und catch ... 335

           13.2 ... Selbst Fehler auslösen (throws und throw) ... 344

           13.3 ... Fehler in Funktionen weitergeben (rethrows) ... 348

           13.4 ... Das Error-Protokoll ... 351

           13.5 ... Fehlerabsicherung von API-Methoden (NSError) ... 353

           13.6 ... Result-Datentyp ... 355

    14.  Importe, Attribute und Systemfunktionen ... 361

           14.1 ... Module, Frameworks und Importe ... 361

           14.2 ... Attribute ... 365

           14.3 ... Systemfunktionen aufrufen ... 367

    TEIL II  App-Programmierung ... 373

    15.  Hello iOS-World! ... 375

           15.1 ... Projektstart ... 376

           15.2 ... Gestaltung der App ... 377

           15.3 ... Steuerung der App durch Code ... 381

           15.4 ... Actions und Outlets für Fortgeschrittene ... 386

           15.5 ... Layout optimieren ... 389

           15.6 ... Textgröße mit einem Slider einstellen ... 394

           15.7 ... Apps auf dem eigenen iPhone oder iPad ausführen ... 396

           15.8 ... Komponenten und Dateien eines Xcode-Projekts ... 399

    16.  iOS-Grundlagen ... 401

           16.1 ... Model-View-Controller (MVC) ... 401

           16.2 ... Klassenhierarchie einer App-Ansicht ... 405

           16.3 ... Die UIViewController-Klasse ... 407

           16.4 ... Phasen einer iOS-App ... 411

           16.5 ... Auto Layout ... 414

           16.6 ... Layoutregeln durch Code definieren ... 429

           16.7 ... Steuerelemente in einer Stack-View anordnen ... 431

           16.8 ... Layoutvarianten ... 435

           16.9 ... Texteingaben ... 442

           16.10 ... Image-Views und Xcassets ... 450

    17.  iOS-Apps mit mehreren Ansichten ... 453

           17.1 ... Storyboard und Controller-Klassen verbinden ... 453

           17.2 ... Ansichten durch Segues verbinden ... 454

           17.3 ... Segues mit Datenübertragung ... 459

           17.4 ... Navigation-Controller ... 464

           17.5 ... Tab-Bar-Controller ... 469

           17.6 ... Split-View-Controller ... 475

           17.7 ... Popups ... 485

           17.8 ... Ja/Nein-Dialoge (UIAlertController) ... 496

    18.  Hello macOS-World! ... 499

           18.1 ... Lottozahlengenerator ... 500

    19.  macOS-Grundlagen ... 509

           19.1 ... Programme mit mehreren Fenstern ... 509

           19.2 ... Tab-View-Controller ... 516

           19.3 ... Standarddialoge ... 523

           19.4 ... Tastatur ... 528

           19.5 ... Menüs ... 533

           19.6 ... Programme ohne Menü ... 542

           19.7 ... Dunkles Erscheinungsbild (»Dark Mode«) ... 544

    20.  tvOS ... 547

           20.1 ... Hello tvOS! ... 548

           20.2 ... Fernbedienung auswerten ... 552

           20.3 ... Focus Engine ... 558

    TEIL III  Programmier- und Arbeitstechniken ... 565

    21.  Dateien und User-Defaults ... 567

           21.1 ... User-Defaults ... 567

           21.2 ... Dateinamen und URLs ... 571

           21.3 ... Bundle-Dateien und Assets ... 573

           21.4 ... Standardverzeichnisse ... 575

           21.5 ... Dateioperationen ... 580

           21.6 ... Wie geht's weiter? ... 587

    22.  Netzwerk, XML und JSON ... 589

           22.1 ... Dateien per HTTP/HTTPS laden ... 589

           22.2 ... XML-Dokumente auswerten ... 597

           22.3 ... JSON-Encoder und -Decoder ... 601

           22.4 ... Webseiten anzeigen ... 608

    23.  Tabellen und Listen darstellen ... 615

           23.1 ... Listen in iOS-Apps (UITableView) ... 615

           23.2 ... Prototypzellen ... 621

           23.3 ... Individuelle Gestaltung von Listenzellen ... 626

           23.4 ... Veränderliche Listen ... 632

           23.5 ... Tabellen in macOS-Apps (NSTableView) ... 634

           23.6 ... Collections asynchron füllen (UICollectionView) ... 645

    24.  GPS- und Kompassfunktionen ... 653

           24.1 ... Hello Map-View! ... 653

           24.2 ... Wegstrecke aufzeichnen ... 658

           24.3 ... Kompassfunktionen ... 665

    25.  Grafik und Animation ... 667

           25.1 ... Eigene Steuerelemente mit Grafikfunktionen ... 667

           25.2 ... Kompass-Steuerelement ... 673

           25.3 ... Core Graphics ... 682

           25.4 ... Animationen ... 685

    26.  Touch, Maus, Gestures und Drag & Drop ... 691

           26.1 ... Touch ... 691

           26.2 ... Maus ... 698

           26.3 ... Gestures ... 705

           26.4 ... Drag & Drop (macOS) ... 708

           26.5 ... Drag & Drop (iOS) ... 721

    27.  Audio, Video und Fotos ... 735

           27.1 ... Audiowiedergabe mit dem AVAudioPlayer ... 735

           27.2 ... Audiowiedergabe mit dem AVPlayer ... 745

           27.3 ... Audiowiedergabe mit dem AVPlayerViewController ... 747

           27.4 ... Audioaufnahmen mit dem AVAudioRecorder durchführen ... 749

           27.5 ... Videos abspielen ... 754

           27.6 ... Videos mit der Picker-View auswählen und aufnehmen ... 757

           27.7 ... YouTube-Videos abspielen ... 761

           27.8 ... Fotos mit der Picker-View auswählen und aufnehmen ... 764

           27.9 ... Fotos in einer AVCaptureSession aufnehmen ... 766

           27.10 ... Barcodes in einer AVCaptureSession erkennen ... 774

    28.  SpriteKit ... 779

           28.1 ... Hello SpriteKit! ... 780

           28.2 ... Sprites erzeugen und bewegen ... 789

           28.3 ... Spielsteuerung durch Touch-Ereignisse ... 794

           28.4 ... Bewegungssteuerung (Gyroskop und Accelerometer) ... 800

           28.5 ... Aktionen ... 806

           28.6 ... Der Game-Loop ... 812

           28.7 ... Kollisionserkennung ... 814

           28.8 ... Minispiel: Luftballone abschießen ... 820

           28.9 ... Physik ... 826

           28.10 ... Minispiel: Pyramide zerstören ... 832

           28.11 ... Scene-Editor ... 838

           28.12 ... Partikel-Emitter ... 844

    29.  Core Data und SQLite ... 847

           29.1 ... Hello, Core Data! ... 848

           29.2 ... Core-Data-Klassenüberblick ... 853

           29.3 ... Core-Data-Entities verknüpfen (Relationships) ... 855

           29.4 ... Core-Data-Interna ... 865

           29.5 ... SQLite.swift ... 868

    30.  iCloud ... 879

           30.1 ... iCloud-Grundlagen ... 879

           30.2 ... Key-Value-Speicher ... 885

           30.3 ... CloudKit-Grundlagen ... 892

           30.4 ... CloudKit-Programmiertechniken ... 899

           30.5 ... CloudKit-Beispiel ... 908

    31.  Asynchrone Programmierung ... 921

           31.1 ... Hello Grand Central Dispatch! ... 922

           31.2 ... GCD-Grundlagen ... 925

           31.3 ... Parallel rechnen ... 930

    32.  App Store und Co. ... 937

           32.1 ... iOS-Artwork (Icons, Launch Screen) ... 938

           32.2 ... macOS-Artwork (Icon) ... 940

           32.3 ... tvOS-Artwork (Parallax-Icons, Launch und Top Shelf Image) ... 941

           32.4 ... Mehrsprachige Apps ... 947

           32.5 ... Eigene Apps im App Store anbieten ... 961

           32.6 ... macOS-Programme selbst weitergeben ... 970

    33.  Xcode-Arbeitstechniken ... 979

           33.1 ... Simulator-Ausgaben stoppen ... 979

           33.2 ... Header-Code einer eigenen Klasse erzeugen ... 980

           33.3 ... Versionsverwaltung mit Git ... 981

           33.4 ... Crashlogs ... 984

           33.5 ... Refactoring ... 984

           33.6 ... Projekte umbenennen ... 986

           33.7 ... Xcode-Verzeichnisse aufräumen ... 986

           33.8 ... Apple Configurator ... 989

    34.  Server-side Swift ... 991

           34.1 ... Swift unter Linux ... 994

           34.2 ... Vapor kennenlernen ... 1000

           34.3 ... Die Vapor-Toolbox ... 1010

           34.4 ... Vapor-Grundlagen ... 1012

           34.5 ... Datenbankanbindung mit Fluent ... 1024

           34.6 ... Authentifizierung und Autorisierung ... 1037

           34.7 ... Deployment ... 1045

    TEIL IV  Beispielprojekte ... 1051

    35.  New-York-Times-Bestseller ... 1053

           35.1 ... New-York-Times-API ... 1055

           35.2 ... Benutzeroberfläche ... 1058

           35.3 ... Split-View-Variante ... 1062

    36.  To-do-Listen ... 1067

           36.1 ... Gestaltung der Benutzeroberfläche ... 1068

           36.2 ... Datenmodell ... 1069

           36.3 ... View-Controller-Klasse ... 1070

           36.4 ... Popup-View-Controller-Klasse ... 1077

           36.5 ... iCloud-Variante ... 1078

           36.6 ... Core-Data-Variante ... 1083

           36.7 ... SQLite-Variante ... 1087

    37.  Schatzsuche ... 1097

           37.1 ... Aufbau der App ... 1097

           37.2 ... Datenmodell ... 1101

           37.3 ... Location Manager selbst gemacht ... 1104

           37.4 ... Steuerelement zur Richtungsanzeige (UIBezierPath) ... 1108

           37.5 ... Hauptansicht mit Listenfeld ... 1109

           37.6 ... Popup-Dialog zum Speichern ... 1114

           37.7 ... Detailansicht mit Richtungspfeil ... 1115

    38.  Währungskalkulator ... 1121

           38.1 ... App-Überblick ... 1121

           38.2 ... Kurse ermitteln ... 1127

           38.3 ... Das Datenmodell der App ... 1129

           38.4 ... Umrechnungsansicht ... 1132

           38.5 ... Einstellungsansicht ... 1138

           38.6 ... Internationalisierung und Lokalisierung ... 1143

    39.  Fünf gewinnt ... 1145

           39.1 ... Die App »Fünf gewinnt« ... 1145

           39.2 ... Enumerationen und globale Funktionen (Globals.swift) ... 1148

           39.3 ... Die Spiellogik (FiveWins.swift) ... 1152

           39.4 ... Darstellung des Spielbretts und der Steine (BoardView.swift) ... 1162

           39.5 ... Steuerung des Spielablaufs (ViewController.swift) ... 1171

           39.6 ... Der Popup-Dialog (PopupVC.swift) ... 1176

           39.7 ... Erweiterungsmöglichkeiten ... 1179

    40.  Puzzle-App ... 1181

           40.1 ... Programmaufbau ... 1182

           40.2 ... Die Klassen »Tile« und »Puzzle« ... 1185

           40.3 ... Verwaltung der Benutzeroberfläche im View-Controller ... 1190

    41.  Icon-Resizer ... 1195

           41.1 ... App-Überblick ... 1195

           41.2 ... Icons verwalten (IconSize-Struktur) ... 1201

           41.3 ... Hauptfenster (ViewController.swift) ... 1206

           41.4 ... Drag-and-Drop-Quelle für Icons (IconCellView.swift) ... 1213

           41.5 ... Drag-and-Drop-Empfänger für Icons (OriginalIconView.swift) ... 1215

           41.6 ... Popup-Menü (IconChoiceVC.swift) ... 1217

           41.7 ... Temporäres Verzeichnis erstellen und löschen ... 1218

    42.  Breakout ... 1221

           42.1 ... Programmaufbau ... 1222

           42.2 ... Initialisierung ... 1223

           42.3 ... Spielsteuerung ... 1230

    43.  Pac-Man selbst gemacht ... 1233

           43.1 ... Programmaufbau ... 1234

           43.2 ... Der Tile-Editor »Tiled« ... 1235

           43.3 ... Globale Konstanten, Datenstrukturen und Enumerationen ... 1240

           43.4 ... Initialisierung des Spiels ... 1242

           43.5 ... Die Maze-Klasse ... 1245

           43.6 ... Aufbau der Spielszene (setup-Methoden) ... 1249

           43.7 ... Spielsteuerung (touch-Methoden) ... 1255

           43.8 ... Bewegung des Pac-Mans ... 1260

           43.9 ... Steuerung der Monster ... 1264

           43.10 ... Kollisionen ... 1269

           43.11 ... Apple-TV-Variante von Pac-Man ... 1273

           43.12 ... Pac-Man-Figuren zeichnen ... 1277

    44.  Asteroids ... 1279

           44.1 ... Programmaufbau ... 1280

           44.2 ... Globale Konstanten und Funktionen ... 1282

           44.3 ... Programmstart und Tastaturereignisse (GameViewController) ... 1282

           44.4 ... Initialisierung des Spiels (GameScene) ... 1285

           44.5 ... Spielablauf (ebenfalls in GameScene) ... 1291

           44.6 ... Fokussierbare Menütexte (MyLabel) ... 1296

           44.7 ... Der Einstellungsdialog (MainScene) ... 1297

      Index ... 1303