Errata zum Buch »Swift 4 — Das umfassende Handbuch«

Diese Seite enthält Updates und Errata zum Buch »Swift 4 — Das umfassende Handbuch«.

S. 36, for-Schleife

Im ersten Absatz steht irrtümlich, dass die Schleife for i in 1..<n die Zahlen bis n durchläuft. Die Schleife läuft aber nur bis n-1! Richtig muss es also heißen:

for i in 1..<n ist der einfachste Weg, um in Swift eine Schleife zu formulieren. Dabei nimmt die Variable i der Reihe nach die Werte 1, 2, 3 bis zum Wert n - 1 an.

S. 117, characters-Eigenschaft

Die im letzten Satz auf dieser Seite erwähnte characters-Eigenschaft zum Durchlaufen der Zeichen einer Zeichenkette ist in Swift 4 nicht mehr erforderlich. (Der nachfolgende Code ist korrekt.)

S. 223, enumerated-Methode

Das Listing am Ende der Seite enthält die Methode enumerate(), richtig ist aber (wie im Text beschrieben) enumerated().

Die Anweisung ar[n] += 1 ist überflüssig. (Ich wollte damit testen, ob das Array innerhalb der Schleife verändert werden kann/darf.)

S. 390, Option ‚Constrains to Margins‘

Meine Beschreibung der Option Constrains to Margins bezieht sich noch auf die Layout Guides, die bis Xcode 8 üblich waren (und die nur bei Projekten, die in Xcode 8 erstellt wurden, weiterhin gelten). Sie wurden in Xcode 9 durch die Safe Area Layout Guides ersetzt (siehe auch S. 432).

Bei Projekten, die mit Xcode 9 erstellt werden, zeigt die Option Constrain to margins keine Wirkung mehr — zumindest nicht für Steuerelemente, die direkt (also in der ersten Ebene) im View Controller platziert werden. Wenn Sie einen Abstand zum Rand (genau genommen zur Safe Area) wünschen, müssen Sie diesen explizit einstellen. Für das Hello-World-Beispiel also z.B. 8 Punkt links und oben. Siehe auch:

Die Option Constrain to margins ist allerdings nicht ganz obsolet. Sie zeigt weiterhin Wirkung, wenn Steuerelemente ineinander verschachtelt werden, wenn Sie also z.B. einen UIButton in eine eigene UIView platzieren. In diesem Fall können weiterhin Margins berücksichtigt werden.

S. 634, erstes Listing

Die Variable cell enthält kein Optional, daher muss der weitere Zugriff in der Form cell ohne nachgestelltes Rufezeichen erfolgen. (Der Code ist nur im Buch falsch abgedruckt, die betreffende Beispieldatei ist korrekt.)

// Eigenschaften der Zelle einstellen und zurückgeben
cell.textLabel!.text = mydata[indexPath.row]  // nicht cell!...
return cell                                   // nicht cell!

Letzte Änderung 16.1.2018. Vielen Dank an alle Leser, die mir Feedback geben!