Bültmann & Gerriets
Swift 5
Syntax, Grundlagen, Programmiertechniken, App-Entwicklung / Objekt- und protokollorientierte Anwendungsentwicklung / MIt vielen Beispiel-Apps für iOS, macOS und TvOS
von Michael Kofler
Verlag: Rheinwerk Verlag GmbH
Reihe: Rheinwerk Computing
Gebundene Ausgabe
ISBN: 978-3-8362-6638-3
Auflage: 4. Auflage
Erschienen am 15.05.2019
Sprache: Deutsch
Format: 249 mm [H] x 207 mm [B] x 73 mm [T]
Gewicht: 2577 Gramm
Umfang: 1328 Seiten

Preis: 49,90 €
keine Versandkosten (Inland)


Jetzt bestellen und schon ab dem 01. Oktober in der Buchhandlung abholen

Der Versand innerhalb der Stadt erfolgt in Regel am gleichen Tag.
Der Versand nach außerhalb dauert mit Post/DHL meistens 1-2 Tage.

49,90 €
merken
zum E-Book (EPUB) 49,90 €
klimaneutral
Der Verlag produziert nach eigener Angabe noch nicht klimaneutral bzw. kompensiert die CO2-Emissionen aus der Produktion nicht. Daher übernehmen wir diese Kompensation durch finanzielle Förderung entsprechender Projekte. Mehr Details finden Sie in unserer Klimabilanz.
Inhaltsverzeichnis
Biografische Anmerkung
Klappentext


  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



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.



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



andere Formate
weitere Titel der Reihe