Btn training bbbdf557d2 Nächste iOS-Schulung: 25. Februar - 01. März 2019, Stuttgart

6. Einführung in Swift

Allgemeines zur Syntax von Swift

Das Semikolon am Zeilenende ist in Swift optional und kann entfallen:

print("Hello World")
print("Hello World");
print("Hello"); print("World")

Kommentare können zeilenweise oder blockweise verwendet werden. Praktischerweise bereiten Kommentarzeichen in Kommentaren keine Probleme:

// Kommentierte Code-Zeile
/* Kommentierter
     Code-Block */
/* Das ist kein Problem in Swift: /* print("Hello World") */   */

In Xcode können Sie mit Editor » Structure » Toggle Comments ⌘/ den ausgewählten Code-Block kommentieren bzw. den Kommentar wieder entfernen.

Deklaration von Variablen und Konstanten

Swift unterscheidet die Deklaration von Variablen mit var:

var str = "Hello world!"

und Konstanten mittels let:

let str = "Hello world!"

Mit let deklarierte Konstanten dürfen nach der initialen Zuweisung nicht mehr verändert werden:

Compilerfehler: Erneute Zuweisung einer mit let deklarierter Konstante

Typinferenz und explizite Typdeklaration

In Swift können Typdeklarationen entfallen sofern der Compiler den Typ ermitteln kann. So kann in der folgenden Deklaration die Typangabe weggelassen werden, da sich der Typ aus dem zugewiesenen Wert ergibt:

var str = "Hello world!"

Optional kann der Typ folgendermaßen explizit deklariert werden - folgende Deklaration ist mit der vorhergehenden gleichwertig:

var str : String = "Hello world!"

Primitive Datentypen

Swift stellt Datentypen für vorzeichenlose und vorzeichenbehaftete ganzzahlige Werte, für Fließkommazahlen und boolesche Werte bereit:

var numberInt8   : Int8     //                       -128 -                       127
var numberInt16  : Int16    //                    -32.768 -                    32.767
var numberInt32  : Int32    //             -2.147.483.648 -             2.147.483.647
var numberInt64  : Int64    // -9.223.372.036.854.775.808 - 9.223.372.036.854.775.807

var numberUInt8  : UInt8    //                          0 -                        255
var numberUInt16 : UInt16   //                          0 -                     65.535
var numberUInt32 : UInt32   //                          0 -              4.294.967.295
var numberUInt64 : UInt64   //                          0 - 18.446.744.073.709.551.615
var numberInt    : Int      // plattformabhängig Int32 bzw. Int64
var numberUInt   : UInt     // plattformabhängig UInt32 bzw. UInt64

var numberFloat  : Float    // 32-bit Fließkommazahl
var numberDouble : Double   // 64-bit Fließkommazahl

var booleanValue : Bool = true

Datenstrukturen: Listen

Listen werden deklariert, indem der Typ, von dem die Listenelemente sind, in eckigen Klammern geschrieben wird:

var words   : [String] = ["bird", "tree", "house"]
var numbers : [Int]    = [1, 2, 3]

Swift unterstützt generische Datentypen und die von Swift bereitgestellten Listentypen sind generisch implementiert: [String] ist eine Abkürzung für Array<String>. Das heißt, bei der Verwendung von Listen ermittelt und prüft der Compiler die Typen der Listenelemente. So werden in folgendem Beispiel die Konstanten vom Compiler automatisch als String deklariert:

let firstWord = words.first
let secondWord = words[1]
let lastWord = words.last

Listen in Swift sind so implementiert, dass mit var deklarierte Listen verändert werden können und mit let deklarierte Listen unveränderlich sind:

var words      = ["bird", "tree", "house"]
let constWords = ["bird", "tree", "house"]

// Erlaubt:
words[0] = "book"

// Fehler: Cannot assign to the result of this expression
constWords[0] = "book"

Objekte konstruieren und Methoden aufrufen

Objekte werden in Swift mit dem Aufruf „Klassenname(...)“ erzeugt. Dabei werden die Namen der Parameter explizit benannt. Die Parameter müssen trotz Benennung genau in der Reihenfolge, die die Klasse vorgibt, übergeben werden. In folgendem Beispiel wird ein Array-Objekt explizit über den Konstruktor der Array-Klasse erzeugt:

var array = Array(repeating: "A", count: 3)

Klassen können Eigenschaften (Properties) deklarieren, die direkt verwendet werden können, zum Beispiel:

let count = array.count

Auch beim Aufruf von Methoden werden die Parameter explizit benannt:

array.joined(separator: ",")

Je nach Definition der Methode entfällt dabei teilweise der erste Parametername, sofern sich die Bedeutung aus dem Methodennamen ergibt:

array.insert("B", at: 0)
array.append("C")

Zeichenketten

Swift stellt für Zeichenketten den Typ String bereit. In Swift können in Zeichenketten mittels der String-Interpolation-Syntax \(...) Werte eingesetzt bzw. Ausdrücke evaluiert werden:

let words = ["bird", "tree", "house"]
let formattedString = "Results: \(words.count) words in \(words)"

Ausgaben auf der Konsole

Mit der Funktion NSLog wird eine Zeichenkette anhand eines Format-Strings formatiert und auf der Konsole ausgegeben. Dabei werden %-Platzhalter durch die übergebenen Werte ersetzt:

NSLog("Results: %i words in %@", wordCount, words)

Da hier die Reihenfolge der Parameter genau der Reihenfolge der Platzhalter im Format-String entsprechen muss, empfiehlt es sich, auch hier mit der modernen Swift-Syntax zu arbeiten. Zu beachten ist jedoch, dass das 1. Argument weiterhin ein Format-String ist:

NSLog("%@", "Results: \(wordCount) words in \(words)")    

Xcode: Playgrounds

Mit File » New » Playground können Sie in Xcode einen Playground erstellen, in dem Swift-Code unmittelbar compiliert und ausgeführt wird:

Xcode Playground

Xcode: Code-Vervollständigung

An vielen Stellen kann Code in Xcode mit ^+Space vervollständigt werden:

Xcode Code-Vervollständigung

Nach Verwendung der Vervollständigung kann mit Tab zwischen den Parameterwerten gewechselt werden:

Xcode Code-Vervollständigung - Parameterwechsel mit Tab

Xcode: Dokumentation

Mit einem Klick mit gedrückter -Taste auf einen Bezeichner oder einem Force-Touch auf dem Touchpad wird die Dokumentation angezeigt:

Xcode Dokumentation anzeigen

Unter Reference finden Sie die vollständige Dokumentation der jeweiligen Klasse. Im Inhaltsverzeichnis finden Sie die Liste aller Methoden, mit ⌘F suchen Sie in der Dokumentation:

Xcode Dokumentation: String-Methoden

Weitere Informationen

Tutorial 1: Swift-Grundlagen im Playground

  1. Erstellen Sie zum Kennenlernen der Swift-Programmiersprache mit File » New » Playground... einen neuen Playground:

    Xcode » File » New » Playground

  2. Code, den Sie in einem Playground einfügen, wird von Xcode compiliert, ausgeführt und sie sehen die Ergebnisse in der rechten Spalte. Tippen Sie testweise einen Ausdruck wie 1 + 1:

    Xcode Playground

  3. Entfernen Sie den Import import UIKit: Für dieses Tutorial beschränken wir uns auf die Verwendung der Swift-Standard-Bibliothek, die Oberflächenbibliothek UIKit muss daher nicht importiert werden.

  4. Deklarieren Sie neben der bestehenden Variablendeklaration var str eine Konstante mit let:

    var str = "Hello, playground"
    let lstr = "Hello world!"
  5. Machen Sie sich mit der Xcode-Code-Vervollständigung vertraut. Tippen Sie „str.“ und lassen Sie mit Ctrl + Space eine Liste aller Methoden und Eigenschaften des Objektes anzeigen:

    Xcode Code-Vervollständigung

  6. Wählen Sie die Methode lowercased():

    String-Methode lowercaseString

  7. Finden Sie über Help » Documentation and API Reference ⇧⌘0 die Eigenschaft, um zu prüfen, ob eine Zeichenkette leer ist:

    Xcode Documentation and API Reference
  8. Verwenden Sie die Eigenschaft im Playground:

    str.isEmpty
  9. Rufen Sie per -Klick bzw. per Force-Touch auf dem Touchpad die Dokumentation für eine der verwendeten Methoden auf:

    Xcode Dokumentation anzeigen

  10. Lassen Sie die Länge der Zeichenkette mit str.characters.count ausgeben.

  11. Machen Sie sich weiter mit der Deklaration von Variablen mit var und Konstanten mit let vertraut, indem Sie einige Deklarationen schreiben und dabei die Typen String, Int, Float, Bool verwenden. Verwenden Sie sowohl eine explizite Typdeklaration als auch eine vom Compiler ermittelte Typdeklaration, beispielsweise:

    let number1 : Int = 5
    let number2 = 5
    let floatNumber = 1.0
    let boolValue = true
  12. Deklarieren Sie eine Liste von Wörtern und iterieren Sie die Liste mit einer for-Schleife. Geben Sie jedes Wort mit print auf der Standardausgabe aus:

    let words = ["bird", "tree", "house"]
    for word in words {
        print("* ", word)
    }
  13. Blenden Sie zur Prüfung des Ergebnisses die Debug Area ein:

    Playground Debug Area
  14. Ermitteln Sie die Länge der Liste und geben Sie das erste und zweite Element aus:

    list.count
    list.first
    list[1]
  15. Deklarieren Sie eine leere Liste - hier wird eine explizite Typangabe benötigt, da der Swift-Compiler den Wertetyp nicht anhand gegebener Listenelemente ermitteln kann:

    let emptyList : [String] = []
  16. Machen Sie sich anhand des folgenden Code-Beispiels mit der Syntax zur Erstellung von Objekten und dem Aufruf von Methoden und der Code-Vervollständigung in Xcode vertraut:

    var array = Array(repeating: "A", count: 3)
    array.removeLast()
    array.append("B")
    array.insert("C", at: 0)
    array.joined(separator: ",")

    Machen Sie sich dabei weiter mit der Xcode-Code-Vervollständigung vertraut: Mit Ctrl-Space können Sie die Vervollständigung manuell auslösen, mit Escape abbrechen, mit Enter wird der Vorschlag übernommen und mit Tab kann danach zwischen den Parametern gewechselt werden:

    Xcode Code-Vervollständigung

Btn book fed239f0c0 Buch „iOS 11-Apps entwickeln mit Swift & Xcode 9“
Btn training bbbdf557d2 Nächste iOS-Schulung: 25. Februar - 01. März 2019, Stuttgart
Btn about 5378472193 Über mich · Kontakt