Inhaltsverzeichnis

Alle Kapitel aufklappen
Alle Kapitel zuklappen
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