Inhaltsverzeichnis

Inhaltsverzeichnis
Inhaltsverzeichnis
Vorwort ................................................................................................................................................
TEIL I
23
Swift
1
Hello World! ...................................................................................................................
27
1.1
»Hello World« im Playground ........................................................................................
28
Voraussetzungen ................................................................................................................
28
Den Playground starten ...................................................................................................
28
Hello World! .........................................................................................................................
29
Grafische Darstellung von Daten ..................................................................................
30
Darstellung von Objekten ................................................................................................
31
Kommentare ........................................................................................................................
33
»Hello World« als Terminal-App ....................................................................................
34
Xcode kennenlernen ..........................................................................................................
34
Wo ist die App? ...................................................................................................................
37
Mehr als nur »Hello World!« ...........................................................................................
38
Den Swift-Interpreter und -Compiler direkt aufrufen .............................................
40
Swift-Crashkurs ..................................................................................................................
42
Elementare Syntaxregeln .................................................................................................
42
Kommentare ........................................................................................................................
43
Variablen und Konstanten ...............................................................................................
44
Zahlen und Zeichenketten ...............................................................................................
44
Datentypen und Optionals ..............................................................................................
45
Tupel, Arrays und Dictionaries ........................................................................................
46
1.2
1.3
1.4
Schleifen ................................................................................................................................
47
Verzweigungen ...................................................................................................................
48
Funktionen ...........................................................................................................................
49
Closures .................................................................................................................................
50
Klassen und Datenstrukturen .........................................................................................
51
Xcode-Crashkurs .................................................................................................................
52
Navigator ..............................................................................................................................
53
Editor ......................................................................................................................................
54
5
Inhaltsverzeichnis
Assistenzeditor ....................................................................................................................
55
Maus- bzw. Trackpad-Kürzel ...........................................................................................
56
Tastenkürzel und Editoreinstellungen .........................................................................
56
Werkzeugleiste (Inspector und Library Pane) .............................................................
57
Code-Snippets .....................................................................................................................
58
Speichern ..............................................................................................................................
59
2
Operatoren .....................................................................................................................
61
2.1
Zuweisungs- und Rechenoperatoren ...........................................................................
61
Einfache Zuweisung ..........................................................................................................
61
Wert- versus Referenztypen ............................................................................................
62
Elementare Rechenoperatoren ......................................................................................
63
Zeichenketten aneinanderfügen ...................................................................................
64
Inkrement und Dekrement ..............................................................................................
65
Rechnen mit Bits .................................................................................................................
65
Kombinierte Rechen- und Zuweisungsoperationen ................................................
66
Vergleichsoperatoren und logische Operatoren .......................................................
66
Vergleichsoperatoren ........................................................................................................
66
== versus === .......................................................................................................................
67
Vergleiche mit ~= ................................................................................................................
68
Datentyp-Vergleich (»is«) .................................................................................................
68
Casting-Operator (»as«) ...................................................................................................
69
Logische Operatoren ..........................................................................................................
70
2.3
Range-Operatoren .............................................................................................................
70
Interval-Operatoren ...........................................................................................................
71
2.4
Operatoren für Fortgeschrittene ...................................................................................
72
Ternärer Operator ...............................................................................................................
72
Unwrapping- und Nil-Coalescing-Operator ...............................................................
72
Optional Chaining ..............................................................................................................
73
Operator-Präferenz ............................................................................................................
74
Operator Overloading .......................................................................................................
75
Vergleichsoperator für Zeichenketten .........................................................................
76
3
Variablenverwaltung und Datentypen ......................................................
77
3.1
Variablen und Konstanten ..............................................................................................
77
2.2
2.5
6
Deklaration von Variablen ...............................................................................................
78
Regeln für Variablennamen ............................................................................................
78
Konstanten ...........................................................................................................................
79
Inhaltsverzeichnis
3.2
3.3
Eigenschaften ......................................................................................................................
80
Enumerationen (Enums) ..................................................................................................
81
Zahlen und boolesche Werte ..........................................................................................
83
Ganze Zahlen .......................................................................................................................
83
Fließkommazahlen ............................................................................................................
84
Typumwandlungen ............................................................................................................
84
Zufallszahlen .......................................................................................................................
85
Boolesche Werte .................................................................................................................
85
Zeichenketten .....................................................................................................................
86
String-Eigenschaften .........................................................................................................
87
Syntax ....................................................................................................................................
88
Funktionen und Methoden zur Bearbeitung von Zeichenketten .........................
89
Länge von Zeichenketten ermitteln ..............................................................................
90
Vergleichen und sortieren ...............................................................................................
90
Suchen und ersetzen .........................................................................................................
92
Reguläre Ausdrücke ...........................................................................................................
93
Zeichenketten zerlegen und decodieren .....................................................................
94
Zeichenketten manipulieren ...........................................................................................
96
Teilzeichenketten extrahieren ........................................................................................
98
Teilzeichenketten komfortabler auslesen ...................................................................
99
Zahlen formatieren ............................................................................................................
101
Zahlen mit dem NSNumberFormatter formatieren ................................................
102
Zeichenketten in Zahlen umwandeln (parsen) .........................................................
103
Zahlen mit dem NSNumberFormatter parsen ..........................................................
104
3.4
Datum und Uhrzeit ............................................................................................................
104
3.5
Optionals ..............................................................................................................................
107
3.6
Optionals deklarieren ........................................................................................................
108
Optionals auslesen ............................................................................................................
108
nil-Test und if-let .................................................................................................................
110
Optional Chaining ..............................................................................................................
110
Nil Coalescing ......................................................................................................................
111
Arrays .....................................................................................................................................
112
Arrays initialisieren ............................................................................................................
113
Array-Elemente auslesen .................................................................................................
114
Arrays manipulieren ..........................................................................................................
115
Arrays sortieren ...................................................................................................................
116
Array-Elemente verarbeiten ............................................................................................
117
Array-Algorithmen .............................................................................................................
119
Mehrdimensionale Arrays ...............................................................................................
120
7
Inhaltsverzeichnis
3.7
Dictionaries ..........................................................................................................................
121
Dictionaries deklarieren und initialisieren .................................................................
121
Zugriff auf Dictionary-Elemente ....................................................................................
122
3.8
Sets .........................................................................................................................................
122
3.9
Tupel .......................................................................................................................................
123
Anwendungen .....................................................................................................................
124
3.10
Einelementige Tupel ..........................................................................................................
125
Interna der Variablenverwaltung ..................................................................................
126
Wert- versus Referenztypen ............................................................................................
126
Datentypen ..........................................................................................................................
128
Syntaktischer Zucker .........................................................................................................
128
Typen-Aliase .........................................................................................................................
129
Datentyp ermitteln und ändern (Casting) ..................................................................
129
Reflection ..............................................................................................................................
130
Speicherverwaltung ..........................................................................................................
131
weak und unowned ...........................................................................................................
132
4
Verzweigungen und Schleifen ..........................................................................
135
4.1
Verzweigungen ...................................................................................................................
135
if ...............................................................................................................................................
135
if-let-Kombination für Optionals ...................................................................................
136
if-let-Kombination mit where .........................................................................................
137
4.2
4.3
8
switch .....................................................................................................................................
138
switch für Tupel ..................................................................................................................
139
case-let-Kombination mit where ...................................................................................
140
Schleifen ...............................................................................................................................
141
for ............................................................................................................................................
141
for-in .......................................................................................................................................
142
while .......................................................................................................................................
143
while-let-Kombination .....................................................................................................
144
do-while ................................................................................................................................
144
break .......................................................................................................................................
144
continue ................................................................................................................................
145
Lottosimulator ....................................................................................................................
145
Version 1: elegant, aber langsam ..................................................................................
146
Einige Benchmarktests .....................................................................................................
148
Version 2: Swift zeigt, was es kann ...............................................................................
149
Inhaltsverzeichnis
5
Funktionen und Closures ......................................................................................
151
5.1
Funktionen definieren und ausführen ........................................................................
151
Benannte Parameter .........................................................................................................
152
Rückgabewerte ...................................................................................................................
153
Funktionsnamen ................................................................................................................
154
5.2
5.3
5.4
Gültigkeitsebenen ..............................................................................................................
155
Verschachtelte Funktionen ..............................................................................................
156
Rekursion ..............................................................................................................................
157
Parameter .............................................................................................................................
157
Gewöhnliche Parameter ..................................................................................................
158
Veränderliche Parameter .................................................................................................
159
Inout-Parameter .................................................................................................................
160
Benannte Parameter .........................................................................................................
160
Optionale Parameter und Defaultwerte .....................................................................
162
Variable Parameteranzahl (Variadics) ..........................................................................
163
Standardfunktionen ..........................................................................................................
164
Sequenzen bearbeiten ......................................................................................................
166
Sequenzen zählen und durchsuchen ...........................................................................
168
advance und distance .......................................................................................................
168
split und join ........................................................................................................................
169
filter, map, reduce und zip ...............................................................................................
170
Sonstige Funktionen ..........................................................................................................
172
Mathematische Funktionen ............................................................................................
173
Funktionale Programmierung ........................................................................................
173
Funktionen als eigener Datentyp ..................................................................................
174
Funktionen als Parameter und Rückgabeergebnisse ...............................................
175
Closures .................................................................................................................................
177
Syntax ....................................................................................................................................
178
Auto-Closures ......................................................................................................................
181
RPN-Rechner ........................................................................................................................
181
Capturing Values ................................................................................................................
183
6
Objektorientierte Programmierung .............................................................
185
6.1
Klassen und Strukturen ....................................................................................................
186
Auch Enumerationen sind Datentypen! ......................................................................
187
Glossar ...................................................................................................................................
187
5.5
Syntax ....................................................................................................................................
188
Das Schlüsselwort »self« ..................................................................................................
190
9
Inhaltsverzeichnis
Zugriffsebenen und Zugriffssteuerung .......................................................................
190
Modifizierer ..........................................................................................................................
192
Verschachtelte Klassen, Strukturen und Enumerationen ......................................
192
Code-Dateien .......................................................................................................................
193
6.2
Enumerationen ...................................................................................................................
193
6.3
Eigenschaften ......................................................................................................................
195
Verzögerte Initialisierung von Eigenschaften (Lazy Properties) ...........................
196
6.4
Eigenschaften beobachten (willSet, didSet) ...............................................................
197
Statische Eigenschaften ...................................................................................................
199
Computed Properties (get und set) ...............................................................................
200
Temperaturumrechnung mit Computed Properties ................................................
200
Read-Only-Eigenschaften ................................................................................................
201
Beispiel: Rectangle-Struktur ............................................................................................
202
Beispiel: ChessFigure-Struktur .......................................................................................
204
Init- und DeInit-Funktion .................................................................................................
205
Syntax für Init-Funktionen ...............................................................................................
206
Parameterliste .....................................................................................................................
206
Code-Reihenfolge in Init-Funktionen ...........................................................................
207
Overloading ..........................................................................................................................
208
Designated versus Convenience Init ............................................................................
208
Init-Funktion als Optional (Failable Init Functions) ..................................................
209
Deinit-Funktion ...................................................................................................................
210
Methoden .............................................................................................................................
210
Instanzmethoden ...............................................................................................................
211
Mutating Methods .............................................................................................................
212
Statische Methoden ..........................................................................................................
214
Benannte Parameter .........................................................................................................
215
Parameter in globalen Funktionen, Init-Funktionen und Methoden ..................
217
Signaturen von Methoden ...............................................................................................
217
6.6
Subscripts .............................................................................................................................
219
Beispiel: Schachbrett .........................................................................................................
219
6.7
Vererbung .............................................................................................................................
221
Mehrfachvererbung ..........................................................................................................
222
6.5
10
Vererbung versus Protokolle versus Extensions ........................................................
223
Das Schlüsselwort override .............................................................................................
224
Das Schlüsselwort super ..................................................................................................
225
Das Schlüsselwort final ....................................................................................................
226
Initialisierung .......................................................................................................................
227
Das Schlüsselwort required .............................................................................................
228
Inhaltsverzeichnis
6.8
6.9
6.10
6.11
Redundanz in Init-Funktionen vermeiden ..................................................................
229
Generalisierung, Polymorphie und Casting ................................................................
230
Generics .................................................................................................................................
232
Syntax ....................................................................................................................................
233
Generics in der Swift-Standardbibliothek ...................................................................
233
Regeln für generische Typen (Type Constraints) .......................................................
235
Protokolle .............................................................................................................................
236
Vorhandene Protokolle implementieren .....................................................................
236
Selbst Protokolle definieren ............................................................................................
237
Protokolle sind Datentypen .............................................................................................
239
Beispiel ..................................................................................................................................
239
Optionale Protokollanforderungen ...............................................................................
241
Generische Protokolle mit »typealias« .........................................................................
243
Standardprotokolle ...........................................................................................................
244
Printable ................................................................................................................................
245
Hashable und Equatable ..................................................................................................
246
Comparable ..........................................................................................................................
247
Any und AnyObject ............................................................................................................
248
AnyClass ................................................................................................................................
249
StringLiteralConvertible ...................................................................................................
250
Extensions ............................................................................................................................
251
Syntax ....................................................................................................................................
252
Übersichtlicherer Code durch Protokoll-Extensions ................................................
254
Beispiel: Rechnen mit Kilo-, Mega- und Gigabyte ....................................................
255
6.12
Metatypen ............................................................................................................................
256
7
Spezialfunktionen .....................................................................................................
259
7.1
Fehler und Exceptions .......................................................................................................
259
Swifts Verhalten beim Auftreten von Fehlern ...........................................................
259
Umgang mit NSError-Objekten ......................................................................................
260
Umgang mit Fehlern in eigenen Funktionen und Methoden ...............................
262
Umgang mit Fehlern in eigenen Typen ........................................................................
264
assert ......................................................................................................................................
265
Exceptions auslösen ..........................................................................................................
266
Module, Frameworks und Importe ...............................................................................
267
Selbst Frameworks erzeugen ..........................................................................................
267
7.3
Attribute ...............................................................................................................................
268
7.4
Systemfunktionen aufrufen ...........................................................................................
269
7.2
11
Inhaltsverzeichnis
TEIL II
iOS
8
Hello iOS-World! .........................................................................................................
273
8.1
Projektstart ..........................................................................................................................
274
8.2
Gestaltung der App ...........................................................................................................
274
Mini-Glossar ........................................................................................................................
275
8.3
8.4
8.5
8.6
Steuerelemente einfügen ................................................................................................
276
Ein erster Test mit dem iOS-Simulator .........................................................................
277
Steuerung der App durch Code ......................................................................................
279
Den Button mit einer Methode verbinden (Actions) ...............................................
279
Zugriff auf das Textfeld über eine Eigenschaft (Outlets) ........................................
282
Endlich eigener Code .........................................................................................................
283
Actions und Outlets für Fortgeschrittene ...................................................................
284
Eine Action für mehrere Steuerelemente ...................................................................
284
Ein Outlet für mehrere Steuerelemente (Outlet Collections) ................................
285
Actions oder Outlets umbenennen ..............................................................................
285
Steuerelemente kopieren .................................................................................................
286
Layout optimieren .............................................................................................................
286
Layoutregeln ........................................................................................................................
287
Layoutregeln für den »Hello-World«-Button .............................................................
288
Layoutregeln für das Textfeld .........................................................................................
289
Wenn es Probleme gibt ....................................................................................................
290
Textgröße mit einem Slider einstellen ........................................................................
291
Das Slider-Steuerelement hinzufügen .........................................................................
291
Den Slider mit einer Methode verbinden ....................................................................
292
8.7
Apps auf dem eigenen iPhone/iPad ausführen ........................................................
293
8.8
Komponenten und Dateien eines Xcode-Projekts ...................................................
295
Weitere Dateien ..................................................................................................................
297
Test- und Produktgruppe ..................................................................................................
297
9
iOS-Grundlagen ...........................................................................................................
299
9.1
Model-View-Controller (MVC) ........................................................................................
299
Kommunikation in MVC-Apps ........................................................................................
301
MVC bei Apps mit mehreren Dialogen .........................................................................
302
Klassenhierarchie einer App-Ansicht ...........................................................................
303
9.2
12
Inhaltsverzeichnis
9.3
9.4
9.5
9.6
9.7
9.8
Die UIViewController-Klasse ..........................................................................................
307
Lebenszyklus eines View-Controllers ............................................................................
307
Init-Funktion ........................................................................................................................
308
viewDidLoad-Methode .....................................................................................................
309
Phasen einer iOS-App .......................................................................................................
311
Die AppDelegate-Klasse ...................................................................................................
311
Zugriff auf den Root-View-Controller und das AppDelegate-Objekt ..................
313
Auto Layout ..........................................................................................................................
314
Grundeinstellungen ..........................................................................................................
314
Viele Wege führen zum Ziel ............................................................................................
315
Live-Vorschau in der Preview-Ansicht ..........................................................................
316
Layoutregeln im Storyboard-Editor einstellen ...........................................................
318
Layoutregeln manuell einstellen ...................................................................................
320
Layoutregeln aus der aktuellen Position und Größe ableiten ...............................
321
Regeln ändern und löschen, Steuerelemente neu positionieren .........................
322
Layoutprobleme in der Document-Outline-Seitenleiste beheben ......................
323
Layoutregeln im Size Inspector bearbeiten ................................................................
325
Layoutdetails im Attributinspektor modifizieren .....................................................
326
Layouts für verschiedene iOS-Geräteklassen (Size Classes) ..................................
327
Tipps und Tricks ...................................................................................................................
328
Layoutregeln mit Code definieren .................................................................................
329
Daten persistent speichern .............................................................................................
331
User-Defaults .......................................................................................................................
332
Umgang mit Dateien .........................................................................................................
334
Zugriff auf Bundle-Dateien .............................................................................................
335
Beispiel ..................................................................................................................................
336
Mehrsprachige Apps ..........................................................................................................
339
Localization versus Internationalization .....................................................................
339
Defaulteinstellungen in Xcode .......................................................................................
339
Deutsch als primäre Sprache einstellen ......................................................................
340
Sprache hinzufügen ...........................................................................................................
341
Lokalisierungsdateien exportieren ................................................................................
342
Lokalisierungsdateien bearbeiten .................................................................................
343
Übersetzte Dateien wieder importieren .....................................................................
344
Die App in verschiedenen Lokalisierungen ausprobieren ......................................
344
Internationalisierung im Code .......................................................................................
346
iOS-Crashlogs ......................................................................................................................
347
13
Inhaltsverzeichnis
10
Apps mit mehreren Ansichten ..........................................................................
349
10.1
Storyboard und Controller-Klassen verbinden .........................................................
349
10.2
Ansichten durch Segues verbinden ..............................................................................
351
Welcher Segue-Typ ist der richtige? ..............................................................................
352
Zurück an den Start mit Unwind ...................................................................................
353
10.3
10.4
10.5
10.6
Segues mit Datenübertragung ......................................................................................
355
Segue-Code für »View 1« .................................................................................................
357
Segue-Code für »View 2« .................................................................................................
358
Segues per Code auslösen ...............................................................................................
359
Tastatureingaben mit Delegation verarbeiten .........................................................
360
Beispiel ..................................................................................................................................
361
Navigation-Controller .......................................................................................................
362
Funktionsweise ...................................................................................................................
362
Einstellungen .......................................................................................................................
363
Steuerung per Code ...........................................................................................................
364
Beispiel ..................................................................................................................................
365
Tab-Bar-Controller .............................................................................................................
366
Tab-Bar-Items ......................................................................................................................
367
Kombination aus Tab-Bar- und Navigation-Controller ...........................................
369
Programmierung ................................................................................................................
370
Bild-Management in Images.xcasset ...........................................................................
372
Zugriff auf Images.xcasset per Code ............................................................................
373
App-Icon ................................................................................................................................
374
11
GPS- und Kompassfunktionen ..........................................................................
375
11.1
Hello MapView! ..................................................................................................................
375
MapKit-Framework ............................................................................................................
375
Um Erlaubnis fragen ..........................................................................................................
376
Info.plist-Einstellungen ....................................................................................................
377
10.7
11.2
14
Erste Tests .............................................................................................................................
378
Kartenfunktionen im iOS-Simulator .............................................................................
378
Wegstrecke aufzeichnen ..................................................................................................
380
Programmaufbau und Auto Layout ..............................................................................
380
Die ViewController-Klasse ...............................................................................................
381
Initialisierung in viewDidLoad ........................................................................................
382
Inhaltsverzeichnis
11.3
11.4
locationManager-Delegate .............................................................................................
383
Die mapView-Methode .....................................................................................................
386
Erweiterungsmöglichkeiten ............................................................................................
386
Kompassfunktionen ..........................................................................................................
387
Kompasskalibrierung ........................................................................................................
388
Grafische Darstellung eines Kompasses .....................................................................
389
Eigene Steuerelemente mit Grafikfunktionen .........................................................
389
Eine Klasse für ein neues Steuerelement ....................................................................
389
Grafikprogrammierung ....................................................................................................
390
Das Steuerelement verwenden ......................................................................................
391
Eine richtige CompassView .............................................................................................
392
Automatischer Redraw bei Größenänderung ............................................................
395
Kompassnadel einstellen .................................................................................................
396
Den Kompass an die Ausrichtung des Geräts anpassen ........................................
396
Xcode-Integration mit IBDesignable und IBInspectable ........................................
398
12
To-do-Listen ...................................................................................................................
401
12.1
Popups ...................................................................................................................................
401
Hello Popup! ........................................................................................................................
401
Popups auch auf dem iPhone .........................................................................................
403
Größe des Popups einstellen ...........................................................................................
404
Popup-Richtung festlegen ...............................................................................................
406
Popups per Code anzeigen und entfernen .................................................................
407
Unwind für Popups ............................................................................................................
409
12.2
Ja-Nein-Dialoge (UIAlertController) .............................................................................
410
12.3
Listen (UITableView) .........................................................................................................
412
Hello UITableView! .............................................................................................................
413
12.4
12.5
Listenzellen mit Bild und Zusatzinformationen ........................................................
417
Individuelle Gestaltung der Listenelemente (UITableViewCell) ..........................
420
Detailansicht zu Listeneinträgen ...................................................................................
423
Veränderliche Listen ..........................................................................................................
426
Die Methode reloadData ..................................................................................................
426
Edit-Modus ...........................................................................................................................
427
Gestaltung der Benutzeroberfläche .............................................................................
427
Beispiele ................................................................................................................................
427
15
Inhaltsverzeichnis
12.6
To-do-App .............................................................................................................................
428
Auto Layout ..........................................................................................................................
428
Datenmodell ........................................................................................................................
429
Outlets und Initialisierung ...............................................................................................
430
Button- und Gesture-Methoden ....................................................................................
431
Popup-Dialog anzeigen ....................................................................................................
433
Listeneintrag hinzufügen oder ändern ........................................................................
434
DataSource-Methoden .....................................................................................................
435
Popup-View-Controller .....................................................................................................
437
13
Schatzsuche ...................................................................................................................
439
13.1
Aufbau der App ...................................................................................................................
439
Aufbau und Storyboard ....................................................................................................
441
Layout-Regeln ......................................................................................................................
442
13.2
13.3
Funktion zur Darstellung geografischer Daten .........................................................
442
Projekteinstellungen .........................................................................................................
443
Datenmodell ........................................................................................................................
443
Basisklasse und Protokolle ...............................................................................................
444
Das Protokoll printable .....................................................................................................
444
Das Protokoll NSCoding ....................................................................................................
445
Array speichern und wieder einlesen (NSKeyedArchiver) ......................................
445
Location Manager selbst gemacht ................................................................................
447
Die Init-Funktion .................................................................................................................
448
Kommunikation über das Notification Center ..........................................................
448
13.4
Steuerelement zur Richtungsanzeige (UIBezierPath) .............................................
451
13.5
Hauptansicht mit Listenfeld ...........................................................................................
452
Outlets, Eigenschaften und Initialisierung .................................................................
452
DataSource-Anbindung ....................................................................................................
453
Segues vom und zum Speichern-Popup, neuen Eintrag speichern .....................
454
Segue vom und zum Detaildialog .................................................................................
456
13.6
Popup-Dialog zum Speichern .........................................................................................
457
13.7
Detailansicht mit Richtungspfeil ...................................................................................
458
Auto Layout ..........................................................................................................................
459
Initialisierung der Controller-Klasse .............................................................................
460
16
Abstand und Richtung zum Zielpunkt errechnen ....................................................
461
Listeneintrag löschen bzw. ändern ...............................................................................
462
Inhaltsverzeichnis
14
Währungskalkulator ................................................................................................
465
14.1
App-Überblick .....................................................................................................................
465
Storyboard und Klassen ....................................................................................................
467
Auto Layout in der Umrechnungsansicht ...................................................................
467
Auto Layout in der Einstellungsansicht .......................................................................
469
Bildkataloge .........................................................................................................................
470
Erweiterungsmöglichkeiten ............................................................................................
470
XML-Dokumente lesen .....................................................................................................
471
Die SWXMLHash-Bibliothek ............................................................................................
472
14.2
14.3
14.4
14.5
Das Datenmodell der App ...............................................................................................
474
Init-Funktion ........................................................................................................................
474
Wechselkurse im Cache-Verzeichnis speichern ........................................................
475
Kursumrechnung ................................................................................................................
477
Länderkürzel aus Währungskürzeln extrahieren ......................................................
477
Umrechnungsansicht ........................................................................................................
477
Property Observer für die Währungskürzel ................................................................
478
Initialisierung in viewDidLoad ........................................................................................
479
Das CurCalc-Objekt initialisieren und das Datum der Kurse anzeigen ..............
480
Ungültige Tastatureingaben vermeiden .....................................................................
481
Tap Gesture Recognizer ....................................................................................................
482
Währungsumrechnung bei der Texteingabe .............................................................
483
Einstellungsansicht ...........................................................................................................
484
Picker-Views (UIPickerView-Klasse) ...............................................................................
484
Outlets, Eigenschaften und viewDidLoad ...................................................................
484
Picker-View mit Daten füllen ..........................................................................................
486
Auswahl eines Picker-View-Elements ...........................................................................
488
14.6
Startansicht (Launch Screen) ..........................................................................................
489
14.7
App-Icon ................................................................................................................................
490
App-Name ............................................................................................................................
491
14.8
Internationalisierung und Lokalisierung ....................................................................
491
14.9
App im App Store einreichen ..........................................................................................
492
App-Store-Regeln ...............................................................................................................
493
Bundle-ID (Xcode) ..............................................................................................................
494
App-ID erzeugen (Apple Developer) .............................................................................
494
App einrichten (iTunes Connect) ....................................................................................
495
App-Daten ausfüllen (iTunes Connect) ........................................................................
497
Distribution Provisioning Profile erzeugen (Apple Developer) .............................
498
App-Upload (Xcode) ..........................................................................................................
500
Warten auf das Okay von Apple .....................................................................................
500
17
Inhaltsverzeichnis
TEIL III
OS X
15
Hello OS-X-World! .....................................................................................................
505
15.1
Von iOS zu OS X ..................................................................................................................
505
Gemeinsamkeiten ..............................................................................................................
505
Unterschiede .......................................................................................................................
506
Windows versus View-Controller ..................................................................................
506
Storyboards ..........................................................................................................................
507
Lottozahlengenerator (Storyboard-Variante) ...........................................................
508
Projekt einrichten ...............................................................................................................
509
Gestaltung der Benutzeroberfläche .............................................................................
509
Effizient arbeiten mit Kopieren und Einfügen ...........................................................
511
Fenstergröße und Fenstertitel einstellen ....................................................................
512
viewDidLoad und representedObject ...........................................................................
513
Outlets und Actions ...........................................................................................................
514
Die Lotto-Klasse ..................................................................................................................
515
Die View-Controller-Klasse ..............................................................................................
516
15.2
15.3
15.4
Programmende ...................................................................................................................
517
Lottozahlengenerator (XIB/AppDelegate-Variante) ...............................................
518
XIB-Dateien ..........................................................................................................................
518
Organisation des Projekts ................................................................................................
519
Die AppDelegate-Klasse ...................................................................................................
520
Eigener Code ........................................................................................................................
520
Programmende ...................................................................................................................
522
Lottozahlengenerator (XIB/WindowController-Variante) ....................................
523
Window-Controller mit XIB-Datei .................................................................................
523
Das Fenster in der AppDelegate-Klasse anzeigen ....................................................
524
Windows-Controller-Code ...............................................................................................
525
Programmende ...................................................................................................................
526
Lottozahlengenerator (XIB/ViewController-Variante) ...........................................
527
Das Fenster mit dem View-Controller verbinden .....................................................
528
Controller-Code ...................................................................................................................
529
16
OS-X-Grundlagen .......................................................................................................
531
16.1
Programme mit mehreren Fenstern .............................................................................
531
15.5
18
Segues ....................................................................................................................................
532
Datenübergabe mit der Methode prepareForSegue ................................................
534
Inhaltsverzeichnis
16.2
16.3
16.4
16.5
16.6
Fenstergröße fixieren ........................................................................................................
536
Window-Eigenschaften des Ziel-Controllers einstellen .........................................
537
Ansichten/Fenster schließen ..........................................................................................
537
Segues per Code ausführen .............................................................................................
538
Fenster per Code erzeugen ..............................................................................................
538
Tab-View-Controller ..........................................................................................................
539
Storyboard und Tab-View-Controller-Einstellungen ................................................
541
Dialogblattgröße ................................................................................................................
542
Segues ....................................................................................................................................
542
Splitter-Steuerelement .....................................................................................................
543
Klassen ...................................................................................................................................
543
Application Defaults mit den User-Defaults verbinden (AppDelegate.swift) ..
543
Textgröße aus den User-Defaults lesen (ViewController.swift) ............................
545
Einstellungen ändern (SettingsGeneralVC.swift) .....................................................
546
User-Defaults-Interna .......................................................................................................
547
Standarddialoge .................................................................................................................
548
Nachrichten anzeigen und Ja/Nein-Entscheidungen treffen ...............................
549
Datei- und Verzeichnisauswahl .....................................................................................
549
Schrift einstellen .................................................................................................................
550
Farbe einstellen ...................................................................................................................
551
Maus .......................................................................................................................................
552
Mausereignisse ...................................................................................................................
553
Koordinatensysteme, Bounds und Frames .................................................................
553
Mausposition ergründen .................................................................................................
554
Statustasten .........................................................................................................................
555
Beispielprogramm ..............................................................................................................
555
Die MyView-Klasse .............................................................................................................
556
Die drawRect-Methode .....................................................................................................
557
Die mouseDown-Methode ..............................................................................................
559
Tastatur .................................................................................................................................
560
Die NSResponder-Klasse ..................................................................................................
561
Tastaturereignisse ..............................................................................................................
562
Beispielprogramm ..............................................................................................................
563
Menüs ....................................................................................................................................
566
Die Responder-Kette ..........................................................................................................
566
Gestaltung der Menüleiste ..............................................................................................
568
Responder-Aktionen ..........................................................................................................
569
Menüaktionen in der AppDelegate-Klasse .................................................................
569
Menüaktionen in eigenen View-Klassen .....................................................................
571
19
Inhaltsverzeichnis
16.7
Veränderung von Menüeinträgen per Code ...............................................................
572
Kontextmenüs .....................................................................................................................
573
Programme ohne Menü ...................................................................................................
574
Menubar-Apps ....................................................................................................................
575
Die AppDelegate-Klasse ...................................................................................................
575
View-Controller ...................................................................................................................
577
Bindings ................................................................................................................................
577
Hello Bindings! ....................................................................................................................
578
Sonderfälle ...........................................................................................................................
579
17
Icon-Resizer ....................................................................................................................
581
17.1
Tabellen (NSTableView) ....................................................................................................
581
Hello NSTableView! ............................................................................................................
582
Table-View mit eigenen Views .......................................................................................
585
Programmaufbau und Country-Klasse ........................................................................
586
Table-View-Code .................................................................................................................
588
Die Tabelle mit Daten füllen ...........................................................................................
588
Tabelle sortieren .................................................................................................................
591
Auswahl einer Zeile ...........................................................................................................
592
Drag & Drop .........................................................................................................................
592
16.8
17.2
17.3
17.4
20
Drag-Operationen empfangen (NSDraggingDestination) .....................................
593
Drag-Operationen initiieren (NSDraggingSource) ....................................................
594
Beispielprogramm ..............................................................................................................
594
Projektaufbau ......................................................................................................................
595
View-Controller ...................................................................................................................
595
Die MyView-Klasse .............................................................................................................
596
Drag & Drop initiieren .......................................................................................................
598
Drag&Drop-Empfang zulassen ......................................................................................
601
Drag&Drop-Empfang verarbeiten .................................................................................
603
Icon-Resizer ..........................................................................................................................
605
Programmaufbau ...............................................................................................................
605
Das Split-View-Steuerelement .......................................................................................
606
Layoutregeln für das Hauptfenster ...............................................................................
608
Popup-Menü ........................................................................................................................
609
Erweiterungsmöglichkeiten ............................................................................................
609
Arbeiten mit Bitmaps (IconSize-Struktur) ..................................................................
610
Enumerationen ...................................................................................................................
610
IconSize-Struktur ................................................................................................................
610
Initialisierung von IconSize-Arrays ................................................................................
611
Inhaltsverzeichnis
17.5
Bitmaps skalieren ...............................................................................................................
612
Bitmaps im PNG-Format speichern ..............................................................................
613
Hauptfenster (ViewController.swift) ...........................................................................
614
viewDidLoad mit dem Aufruf von unregisterDraggedTypes .................................
615
Popup- und Speicher-Buttons, Programmende ........................................................
616
Split-View-Delegation .......................................................................................................
618
Table-View-Datenquelle ...................................................................................................
618
17.6
Drag&Drop-Quelle für Icons (IconCellView.swift) ...................................................
621
17.7
Drag&Drop-Empfänger für Icons (OriginalIconView.swift) ..................................
622
Drag & Drop einer Bilddatei empfangen .....................................................................
623
Dateiauswahldialog für die Bilddatei ...........................................................................
624
17.8
Popup-Menü (IconChoiceVC.swift) ...............................................................................
625
17.9
Temporäres Verzeichnis erstellen und löschen (AppDelegate.swift) .................
626
Ein eigenes temporäres Verzeichnis einstellen .........................................................
627
Temporäres Verzeichnis löschen ....................................................................................
628
Index ...................................................................................................................................
629
21