

Beschreibung
Michael Kofler präsentiert Ihnen auf 1300 Seiten alle Merkmale und Besonderheiten von Apples Programmiersprache. Zugleich erhalten Sie eine Einführung in die Syntax und in die objektorientierte Programmierung. Sie erfahren anhand vieler Beispiele, wie Sie Apps...Michael Kofler präsentiert Ihnen auf 1300 Seiten alle Merkmale und Besonderheiten von Apples Programmiersprache. Zugleich erhalten Sie eine Einführung in die Syntax und in die objektorientierte Programmierung. Sie erfahren anhand vieler Beispiele, wie Sie Apps in iOS, macOS und tvOS entwickeln. Ideal für Umsteiger von Objective-C und Java, aber auch für Einsteiger mit Grundkenntnissen im Programmieren. Inklusive iCloud und Server-side Swift. Aus dem Inhalt: Klassen, Protokolle, Extensions Closures, Umgang mit Fehlern Crashkurs in Xcode Storyboards erstellen Internationalisierung Actions, Outlets, Segues Popovers, Focus Engine Artwork für iOS, macOS und tvOS Programmiertechniken Tabellen und Listen Grafik, Dateien, XML, JSON Audio, Video, Fotots Spritekit Server-side Swift ansprechende Beispiel-Apps: GPS-Schatzsuche, Pac-Man, Arkanoid
»Wer Apps mit Swift programmieren möchte, erhält mit diesem Wälzer einen soliden Helfer.«
Autorentext
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.
Inhalt
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 …