Swift 5

Swift 5
Syntax, Grundlagen, Programmiertechniken, App-Entwicklung / Objekt- und protokollorientierte Anwendungsentwicklung / MIt vielen Beispiel-Apps für iOS, macOS und TvOS
Sofort lieferbar | Lieferzeit: Sofort lieferbar I

49,90 €*

Alle Preise inkl. MwSt. | Versandkostenfrei
Artikel-Nr:
9783836266383
Veröffentl:
2019
Erscheinungsdatum:
01.05.2019
Seiten:
1328
Autor:
Michael Kofler
Gewicht:
2577 g
Format:
249x207x73 mm
Serie:
Rheinwerk Computing
Sprache:
Deutsch
Beschreibung:

Dr. Michael Kofler studierte Telematik an der TU Graz. Er zählt zu den erfolgreichsten und vielseitigsten Computerbuchautoren im deutschen Sprachraum. Zu seinen Themengebieten zählen neben Linux auch macOS, MySQL, KVM, Visual Basic und Excel-VBA. Viele seiner Bücher wurden übersetzt. Michael Kofler arbeitet auch als Software-Entwickler, Berater sowie als Lehrbeauftragter an einer Fachhochschule.

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

Mit vielen Beispiel-Apps für iOS, macOS und tvOS

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

Kunden Rezensionen

Zu diesem Artikel ist noch keine Rezension vorhanden.
Helfen sie anderen Besuchern und verfassen Sie selbst eine Rezension.