Inhaltsverzeichnis

Alle Kapitel aufklappen
Alle Kapitel zuklappen
Vorwort
15
TEIL I Swift
21
1 Hello World!
23
1.1 »Hello World« im Playground
23
1.2 »Hello World« als Terminal-App
32
1.3 »Hello World!« auf dem iPad
40
2 Swift-Crashkurs
43
2.1 Elementare Syntaxregeln und Kommentare
43
2.2 Variablen, Konstanten und Datentypen
47
2.3 Strukturierung des Codes
51
2.4 Klassen und Datenstrukturen
56
2.5 Fehlerabsicherung
58
2.6 Xcode-Crashkurs
59
3 Operatoren
71
3.1 Zuweisungs- und Rechenoperatoren
71
3.2 Vergleichsoperatoren und logische Operatoren
76
3.3 Range-Operatoren
81
3.4 Operatoren für Fortgeschrittene
82
3.5 Eigene Operatoren
86
4 Variablen und Optionals
91
4.1 Variablen und Konstanten
91
4.2 Optionals
98
4.3 Wert- versus Referenztypen
103
5 Verzweigungen und Schleifen
107
5.1 Verzweigungen mit if
107
5.2 Inverse Logik mit guard
111
5.3 Verzweigungen mit switch
112
5.4 Versions- oder plattformabhängiger Code
116
5.5 Schleifen
117
5.6 Nicht triviale Schleifen
122
6 Funktionen und Closures
129
6.1 Funktionen definieren und ausführen
129
6.2 Parameter
140
6.3 Standardfunktionen
147
6.4 Funktionale Programmierung
151
6.5 Closures
156
7 Zahlen und geometrische Strukturen
167
7.1 Zahlen und boolesche Werte
168
7.2 NSNumber
172
7.3 CGFloat, CGPoint, CGSize und Co.
173
8 Zeichenketten
181
8.1 Syntax
181
8.2 Bearbeitung von Zeichenketten
185
8.3 Suchen und ersetzen
189
8.4 Zeichenketten zerlegen und zusammensetzen
192
8.5 Zeichenketten und Zahlen umwandeln
198
9 Datum und Uhrzeit
203
9.1 Datum und Uhrzeit ermitteln und darstellen
203
9.2 Rechnen mit Datum und Uhrzeit
205
10 Arrays, Dictionaries, Sets und Tupel
207
10.1 Arrays
207
10.2 Arrays und Aufzählungen verarbeiten
216
10.3 Dictionaries
225
10.4 Sets
226
10.5 Option-Sets
227
10.6 Tupel
229
10.7 Lottosimulator
231
11 Objektorientierte Programmierung I
237
11.1 Klassen und Strukturen
238
11.2 Enumerationen
247
11.3 Eigenschaften
251
11.4 Init- und Deinit-Funktion
263
11.5 Methoden
268
11.6 Subscripts
276
11.7 Typ-Aliasse
278
11.8 Speicherverwaltung
279
12 Objektorientierte Programmierung II
285
12.1 Vererbung
285
12.2 Generics
297
12.3 Protokolle
301
12.4 Standardprotokolle
310
12.5 Extensions
318
12.6 Protokollerweiterungen
323
12.7 Reflection und Metatypen
328
13 Fehlerabsicherung
333
13.1 Fehlerabsicherung mit try und catch
333
13.2 Selbst Fehler auslösen (throws und throw)
342
13.3 Fehler in Funktionen weitergeben (rethrows)
346
13.4 Das Error-Protokoll
350
13.5 Fehlerabsicherung von API-Methoden (NSError)
351
14 Importe, Attribute und Systemfunktionen
355
14.1 Module, Frameworks und Importe
355
14.2 Attribute
359
14.3 Systemfunktionen aufrufen
361
TEIL II App-Programmierung
367
15 Hello iOS-World!
369
15.1 Projektstart
370
15.2 Gestaltung der App
371
15.3 Steuerung der App durch Code
376
15.4 Actions und Outlets für Fortgeschrittene
381
15.5 Layout optimieren
383
15.6 Textgröße mit einem Slider einstellen
390
15.7 Apps auf dem eigenen iPhone/iPad ausführen
392
15.8 Komponenten und Dateien eines Xcode-Projekts
394
16 iOS-Grundlagen
397
16.1 Model-View-Controller (MVC)
397
16.2 Klassenhierarchie einer App-Ansicht
402
16.3 Die UIViewController-Klasse
405
16.4 Phasen einer iOS-App
409
16.5 Auto Layout
412
16.6 Steuerelemente in einer Stack-View anordnen
429
16.7 Texteingaben
432
16.8 Image-Views und Xcassets
441
17 iOS-Apps mit mehreren Ansichten
445
17.1 Storyboard und Controller-Klassen verbinden
445
17.2 Ansichten durch Segues verbinden
446
17.3 Segues mit Datenübertragung
451
17.4 Navigation-Controller
456
17.5 Tab-Bar-Controller
461
17.6 Split-View-Controller
468
17.7 Popups
478
17.8 Ja-Nein-Dialoge (UIAlertController)
489
18 Hello macOS-World!
493
18.1 Von iOS zu macOS
493
18.2 Lottozahlengenerator (Storyboard-Variante)
496
18.3 Lottozahlengenerator (XIB/AppDelegate-Variante)
505
18.4 Lottozahlengenerator (XIB/WindowController-Variante)
511
18.5 Lottozahlengenerator (XIB/ViewController-Variante)
515
19 macOS-Grundlagen
519
19.1 Programme mit mehreren Fenstern
519
19.2 Tab-View-Controller
527
19.3 Standarddialoge
535
19.4 Maus
539
19.5 Tastatur
547
19.6 Menüs
553
19.7 Programme ohne Menü
561
19.8 Drag&Drop
564
20 tvOS
579
20.1 Hello tvOS!
580
20.2 Fernbedienung auswerten
586
20.3 Focus Engine
592
TEIL III Programmier- und Arbeitstechniken
601
21 Dateien und User-Defaults
603
21.1 User-Defaults
603
21.2 Dateinamen und URLs
608
21.3 Bundle-Dateien und Xcassets-Bilder
610
21.4 Standardverzeichnisse
612
21.5 Dateioperationen
617
21.6 Wie geht's weiter?
625
22 Netzwerk, XML und JSON
627
22.1 Dateien per HTTP/HTTPS laden
627
22.2 XML-Dokumente auswerten
636
22.3 JSON-Dokumente auswerten
640
22.4 Webseiten anzeigen
644
23 Tabellen und Listen darstellen
651
23.1 Listen in iOS-Apps (UITableView)
651
23.2 Prototypzellen
657
23.3 Individuelle Gestaltung von Listenzellen
663
23.4 Veränderliche Listen
669
23.5 Tabellen in macOS-Apps (NSTableView)
671
23.6 Collections asynchron füllen (UICollectionView)
682
24 GPS- und Kompassfunktionen
691
24.1 Hello MapView!
691
24.2 Wegstrecke aufzeichnen
696
24.3 Kompassfunktionen
703
25 Grafik und Animation
707
25.1 Eigene Steuerelemente mit Grafikfunktionen
708
25.2 Kompass-Steuerelement
714
25.3 Core Graphics
723
25.4 Animationen
725
26 Audio, Video und Fotos
731
26.1 Audio-Wiedergabe mit dem AVAudioPlayer
731
26.2 Audio-Wiedergabe mit dem AVPlayer
740
26.3 Audio-Wiedergabe mit dem AVPlayerViewController
742
26.4 Audio-Aufnahmen mit dem AVAudioRecorder durchführen
744
26.5 Videos abspielen
749
26.6 Videos mit der Picker-View auswählen und aufnehmen
753
26.7 YouTube-Videos abspielen
758
26.8 Fotos mit der Picker-View auswählen und aufnehmen
761
26.9 Fotos in einer AVCaptureSession aufnehmen
763
26.10 Barcodes in einer AVCaptureSession erkennen
772
27 SpriteKit
777
27.1 Hello SpriteKit!
778
27.2 Sprites erzeugen und bewegen
786
27.3 Spielsteuerung durch Touch-Ereignisse
792
27.4 Bewegungssteuerung (Gyroskop und Accelerometer)
798
27.5 Aktionen
804
27.6 Der Game-Loop
811
27.7 Kollisionserkennung
813
27.8 Minispiel: Luftballone abschießen
819
27.9 Physik
826
27.10 Minispiel: Pyramide zerstören
832
27.11 Scene-Editor
838
27.12 Partikel-Emitter
845
28 Asynchrone Programmierung
849
28.1 Hello Grand Central Dispatch!
850
28.2 GCD-Grundlagen
853
28.3 Parallel rechnen
858
28.4 Die Async-Bibliothek
865
29 App Store und Co.
867
29.1 iOS-Artwork (Icons, Launch Screen)
868
29.2 macOS-Artwork (Icon)
869
29.3 tvOS-Artwork (Parallax-Icons, Launch und Top Shelf Image)
870
29.4 Mehrsprachige Apps
877
29.5 Eigene Apps im App Store anbieten
886
29.6 macOS-Programme selbst weitergeben
895
30 Xcode-Arbeitstechniken
901
30.1 Simulator-Ausgaben stoppen
901
30.2 Header-Code einer eigenen Klasse erzeugen
902
30.3 Versionsverwaltung mit Git
903
30.4 Crashlogs
906
30.5 Projekte umbenennen
906
30.6 Xcode-Verzeichnisse aufräumen
907
TEIL IV Beispielprojekte
911
31 New-York-Times-Bestseller
913
31.1 New-York-Times-API
915
31.2 Benutzeroberfläche
918
31.3 Split-View-Variante
924
32 To-do-Listen
929
32.1 Gestaltung der Benutzeroberfläche
930
32.2 Datenmodell
931
32.3 View-Controller-Klasse
932
32.4 Popup-View-Controller-Klasse
939
33 Schatzsuche
941
33.1 Aufbau der App
941
33.2 Datenmodell
946
33.3 Location Manager selbst gemacht
948
33.4 Steuerelement zur Richtungsanzeige (UIBezierPath)
953
33.5 Hauptansicht mit Listenfeld
954
33.6 Popup-Dialog zum Speichern
959
33.7 Detailansicht mit Richtungspfeil
960
34 Währungskalkulator
969
34.1 App-Überblick
969
34.2 Kurse ermitteln
977
34.3 Das Datenmodell der App
980
34.4 Umrechnungsansicht
983
34.5 Einstellungsansicht
990
34.6 Internationalisierung und Lokalisierung
995
35 Fünf Gewinnt
997
35.1 Die App »Fünf Gewinnt«
997
35.2 Enumerationen und globale Funktionen (Globals.swift)
1000
35.3 Die Spiellogik (FiveWins.swift)
1004
35.4 Darstellung des Spielbretts und der Steine (BoardView.swift)
1015
35.5 Steuerung des Spielablaufs (ViewController.swift)
1025
35.6 Der Popup-Dialog (PopupVC.swift)
1031
35.7 Erweiterungsmöglichkeiten
1033
36 Icon-Resizer
1037
36.1 App-Überblick
1037
36.2 Icons verwalten (IconSize-Struktur)
1042
36.3 Hauptfenster (ViewController.swift)
1049
36.4 Drag&Drop-Quelle für Icons (IconCellView.swift)
1057
36.5 Drag&Drop-Empfänger für Icons (OriginalIconView.swift)
1058
36.6 Popup-Menü (IconChoiceVC.swift)
1061
36.7 Temporäres Verzeichnis erstellen und löschen
1062
37 Breakout
1065
37.1 Programmaufbau
1066
37.2 Initialisierung
1067
37.3 Spielsteuerung
1073
38 Pac-Man selbst gemacht
1077
38.1 Programmaufbau
1078
38.2 Der Tile-Editor »Tiled«
1080
38.3 Globale Konstanten, Datenstrukturen und Enumerationen
1085
38.4 Initialisierung des Spiels
1087
38.5 Die Maze-Klasse
1090
38.6 Aufbau der Spielszene (setup-Methoden)
1094
38.7 Spielsteuerung (touch-Methoden)
1101
38.8 Bewegung des Pac-Mans
1106
38.9 Steuerung der Monster
1110
38.10 Kollisionen
1116
38.11 Apple-TV-Variante von Pac-Man
1120
38.12 Pac-Man-Figuren zeichnen
1124
39 Asteroids
1127
39.1 Programmaufbau
1128
39.2 Globale Konstanten und Funktionen
1130
39.3 Programmstart und Tastaturereignisse (GameViewController)
1130
39.4 Initialisierung des Spiels (GameScene)
1134
39.5 Spielablauf (ebenfalls in GameScene)
1140
39.6 Fokussierbare Menütexte (MyLabel)
1146
39.7 Der Einstellungsdialog (MainScene)
1147
Index
1153