2188410

Swift für iOS: Programmier-Kurs für Einsteiger

24.10.2016 | 10:05 Uhr |

Sie wollen Apps für iPhone, iPad oder Mac programmieren? Mit Apples Programmiersprache Swift kein Problem. Unser Einsteigerkurs schafft die Basis für Ihre Karriere als Swift-Programmierer.

Bis vor gut zwei Jahren war Objective-C die Standardsprache, um Apps fürs iPhone, iPad (iOS-Apps) oder den Mac (MacOS-Anwendungen) zu entwickeln. Auf der Apple-Entwicklerkonferenz im Juni 2014 stellte Apple überraschend eine neue Programmiersprache vor, die langfristig den C-Dialekt ablösen dürfte: Swift. Dass diese Wachablösung bereits in vollem Gang ist, zeigen die Oktober-Zahlen des Tiobe-Index: Swift hat unter den beliebtesten Programmiersprachen sich mittlerweile auf den zwölften Platz vorgehangelt und dabei zuletzt auch Ruby und Visual Basic überholt.

Den besten Swift-Kurs für iOS 10 bei Udemy ansehen: 85 Prozent Rabatt erhalten mit Gutscheincode PCWELT15

Apple wäre nicht Apple, wenn hier nicht kräftig alte Zöpfe abgeschnitten werden und genau das macht Swift. C galt immer schon als kryptische Sprache, die zwar mächtig aber schwer lesbar ist, Quellcode musste extrem gut dokumentiert sein, damit andere Programmierer sich in den Code hineindenken konnten. Auch Swift-Code sollte man nach wie vor gut dokumentieren, aber die Syntax ist deutlich schneller zu verstehen, besonders für Einsteiger.

Tipp : Apple bietet auch eine Portierung für Linux an. Sie hat aber noch experimentellen Charakter.

Systemanforderungen für Swift

Auch das ist Apple-typisch: Will man in Swift programmieren, braucht man zwingend Apple-Hardware – ein einfacher Billig-PC tut es nicht. Besorgen Sie sich einen Mac, möglichst mit dem aktuellen macOS 10.12 Codename „Sierra“. Die gute Nachricht: Es muss kein neuer Mac sein! Apple Unterstützt mit macOS Sierra Hardware, die fünf Jahre oder älter sein darf. Der Mac Mini 2010 (mit Intel Core-2-Duo-CPU) wird beispielsweise von Apple immer noch unterstützt und man bekommt ihn gebraucht für 300 bis 400 Euro. Diese Summe kann man schon mal investieren. Wichtig: Die Speicherausstattung sollte mindestens vier Gigabyte betragen, ab acht Gigabyte läuft das Betriebssystem stets flüssig. Auch der Generalüberholt-Shop von Apple ist eine gute Anlaufstelle für günstige, aber dennoch leistungsstarke Macs.

Das aktuelle Mac-Betriebssystem macOS Sierra ist kostenlos über den Apple App Store erhältlich, alles was Sie brauchen, ist eine Apple ID, die Sie ebenfalls kostenlos anlegen können. Dann fehlt nur noch das Entwicklungssystem Xcode. Xcode gibt es ebenfalls als kostenlosen Download im Mac App Store. Auch hier sollte man die aktuellste Version verwenden. Zusammen mit macOS Sierra brachte der iPhone-Hersteller Xcode 8 heraus, das die derzeit aktuelle Swift-Version 3 und alle benötigten Bibliotheken für iOS 10 mitbringt. Damit sind Sie für die App-Programmierung gut gerüstet.

Einige Besonderheiten von Swift

Swift ist genauso wie Objective-C voll objektorientiert. Man arbeitet mit Klassen, Methoden und Eigenschaften. Apple hat von Anfang an darauf geachtet, dass man in Swift genau die gleichen System-APIs benutzen kann wie unter Objective-C. Damit gilt: Alles was in Objective-C bisher möglich war oder in Zukunft möglich sein wird, soll in Swift genauso funktionieren. Es gibt also eigentlich keinen Grund mehr, Objective-C statt Swift zu verwenden. Dennoch bleibt Xcode bis auf weiteres voll kompatibel zu Objective-C (und anderen C-Dialekten), ganz einfach, um die Unmengen an bereits existierenden Code weiterhin zu unterstützen.

Intelligente Variablen-Deklaration und Optionals

Im Vergleich zu Objective-C führt Swift einige Besonderheiten ein. Variablen muss man bei der Deklaration beispielsweise keinen Typ mehr zuweisen. Der Typ ergibt sich automatisch bei der ersten Benutzung der Variable.

Ein weiteres grundlegendes Konzept in Swift sind so genannte „Optionals“. Damit sind Variablen gemeint, die bei Ihrer Deklaration nicht unbedingt einen Wert zugewiesen bekommen. Normalerweise würde ein Programm sofort abstürzen, wenn es auf eine solche Variable zugreift, oder es lässt sich gar nicht erst kompilieren. Nicht so in Swift. Man kann diesen undefinierten Zustand dazu nutzen, um beispielsweise Benutzereingaben zu überprüfen und zu erkennen, dass der Benutzer die eine oder andere Eingabe noch gar nicht gemacht hat. Das sorgt letztlich für mehr Fehlertoleranz und somit für eine bessere Stabilität der App.

Beispiel: Hallo Welt

Unter Entwicklern hat es sich seit C etabliert: Die erste Aufgabe einer Programmiersprache ist es, „Hallo Welt“ auf dem Bildschirm auszugeben. Auf Swift umgemünzt bedeutet das, eine so genannte „Hallo Welt“-App zu erzeugen. Also ein ganz einfaches Programm, das nichts anderes macht, als den Text „Hallo Welt“ auszugeben.

Unter iOS ist das aber weniger spannend, weil es keine Textkonsole gibt, auf der der Text erscheinen würde. Wir wollen also eine Swift-App programmieren, die etwas mehr kann. Sie soll einen Button/Knopf enthalten, der, sobald man ihn antippt, den Text „Hallo Welt“ in einem Textfeld anzeigt. Noch dazu sollen Knopf und Textfeld immer übereinander und zentriert auf dem Bildschirm erscheinen, egal, ob man ein iPhone oder iPad benutzt und egal ob man es im Hoch- oder Querformat hält.

Wichtiger Hinweis: Unsere Screenshot-Galerie erklärt das Erstellen Ihrer ersten Swift-App Schritt für Schritt. Die darin enthaltenen Abbildungen ergänzen den folgenden Text.

Vorbereitungen für das erste Swift-Programm

Jetzt geht es los: Xcode enthält bereits Templates für iOS-Apps. Starten Sie Xcode und wählen Sie im Startdialog „Create a new Xcode project“.

So meldet sich Xcode beim Start
Vergrößern So meldet sich Xcode beim Start

Nun erscheint der Auswahldialog für die Templates. Wählen Sie in der linken Spalte unter „iOS“ den Eintrag „Application“ an. Rechts erscheinen dann die verschiedenen Templates. Da unser Programm nur einen einzigen Ausgabebildschirm („View“) benutzen wird, wählen Sie hier „Single View Application“ und klicken Sie auf „Next“.

Jetzt erscheint der Optionen-Dialog. Hier legen Sie fest, wie die App heißen soll und, ganz wichtig: in welcher Programmiersprache sie verfasst wird. Tragen Sie als Namen „HalloWelt“ ein. Unter „Organisation Name“ muss ein Firmenname stehen, denken Sie sich einen Namen aus, wir nehmen mal „Mustermann GmbH“. Wichtig ist der „Organisation Identifier“. Auch hier muss etwas stehen. In der Regel trägt man hier die Internet-Domain der eigenen Firma ein, aber in umgekehrter Reihenfolge, also statt „mustermann.de“ schreiben Sie „de.mustermann“. Keine Angst diese Domain wird nicht abgefragt, sie muss also vorerst nicht existieren. Sie wird erst dann relevant, wenn Sie offiziell Apps im App Store veröffentlichen wollen. Klicken Sie nun auf „Next“.

Jetzt wird es spannend: Im Menü „Language“ wählen Sie „Swift“ und bei „Devices“ „Universal“. Damit ist klar, dass sie in Swift programmieren wollen und die App hinterher sowohl auf dem iPhone, als auch auf dem iPad laufen soll. Die drei Häkchen bei „Use Core Data“, „Include Unit Tests“ und „Include UI Tests“ interessieren uns erst einmal nicht, wir lassen sie auf den Default-Einstellungen. Klicken Sie wieder auf „Next“.

Nun will Xcode wissen, wo Sie den Quellcode auf der Mac-Festplatte speichern wollen. Der Ordner „Dokumente“ ist erst einmal eine gute Wahl. Den Haken bei „Source Control“ lassen Sie gesetzt, ebenso die Einstellung „My Mac“ bei „Create Git Repository“. Klicken Sie auf „Create“.

Nun erstellt Xcode ein Projekt mit allen dazugehörigen Quellcode-Dateien, dann erscheinen die Projekteinstellungen.

In der Liste links tauchen alle Quelltexte auf. Die Warnung in der Mitte kann man erst einmal ignorieren.
Vergrößern In der Liste links tauchen alle Quelltexte auf. Die Warnung in der Mitte kann man erst einmal ignorieren.

Hier müssen Sie nichts ändern, die Warnung bei „No code signing identities found“ können Sie vorerst ignorieren. Sie wird erst dann relevant, wenn Sie die App auf ein physikalisches iOS-Gerät installieren wollen. Unser Beispielprogramm führen wir aber erst einmal nur im Simulator aus. 

Das Projekt ist bereits jetzt kompilier- und ausführbar. Wenn Sie auf den Playbutton oben links im Fenster klicken, kompiliert es Xcode, startet den Simulator und lädt die App in den Simulator. Allerdings erscheint nur ein weißer Bildschirm, weil unsere App noch keinerlei Benutzerelemente enthält. Die legen wir jetzt an. 

In der linken Spalte sehen Sie eine Liste aller zum Projekt zugehörigen Quellcode-Dateien. Klicken Sie auf „Main.storyboard“.
Der große weiße Bereich in der Mitte unter „View Controller“ symbolisierten den Hintergrund unseres Benutzerinterfaces. Hier platzieren wir die beiden Elemente. Diese befinden sich in einer Liste auf der rechten Seite. Klicken Sie im unteren Bereich auf das kleine Symbol mit dem Quadrat im Kreis. Nun scrollen Sie die Liste nach unten bis die Objekte „Label“ und direkt darunter „Button“ erscheinen.

In der rechten Liste klickt man auf den Kreis mit dem kleinen Quadrat darin. Dann erscheint die Liste aller verfügbaren Objekte. Interessant für uns sind „Label“ und „Button“
Vergrößern In der rechten Liste klickt man auf den Kreis mit dem kleinen Quadrat darin. Dann erscheint die Liste aller verfügbaren Objekte. Interessant für uns sind „Label“ und „Button“

Label und Button erzeugen

Klicken Sie auf „Label“ und ziehen Sie es per Drag-and-Drop in den weißen Bereich (View Controller) in der Mitte des Fensters. Am Mauscursor erscheint ein Plus-Zeichen. Wir wollen das Objekt horizontal und vertikal zentriert ablegen. Blaue Hilfslinien erleichtern Ihnen die Positionierung des Objektes.

Das Gleiche wiederholen Sie mit dem Objekt „Button“, nur ziehen Sie es etwas oberhalb des Labels auf den View Controller. Auch hier helfen ihnen die gestrichelten blauen Linien, um das Objekt horizontal zentriert abzulegen. Per Doppelklick auf das abgelegt Buttonobjekt können Sie den Text ändern, der im Knopf dargestellt werden soll. Wir tippen „Drück mich!“.

Der Knopf kommt in einigem Abstand direkt darüber.
Vergrößern Der Knopf kommt in einigem Abstand direkt darüber.

Constraints: Die richtige Platzierung

Wenn wir das Projekt jetzt starten, sehen wir bereits das Label, aber es ist nicht zentriert und der Knopf befindet sich auch nicht da, wo er hin soll. Es fehlen noch die Regeln, nach denen die Elemente bei verschiedenen Auflösungen und Ausrichtungen auf dem Bildschirm platziert werden sollen. Apple nennt diese Regeln „Constraints“. Keine Angst, hier muss man keinen Code programmieren, Constraints legt man ganz einfach grafisch mit der Maus fest. Klicken Sie mit der rechten(!) Maustaste auf das Label, halten Sie die rechte Maustaste gedrückt und ziehen Sie die Maus etwas nach unten, bis der Hintergrund des ViewControllers blau gefärbt wird. Lassen Sie nun die rechte Maustaste los. Es erscheint ein Kontextmenü.

Damit das Label stets horizontal zentriert erscheint, erzeugen wir ein passendes „Constrain“
Vergrößern Damit das Label stets horizontal zentriert erscheint, erzeugen wir ein passendes „Constrain“

Hier wählen Sie den Punkt „Center Horizontally in Container“. Jetzt wiederholen Sie den Vorgang, aber ziehen Sie die Maus nicht nach unten, sondern nach links. Im Menü wählen Sie nun „Center Vertically in Container“. Wenn Sie jetzt das Projekt kompilieren, wird das Label stets exakt zentriert erscheinen, egal welche Ausrichtung Sie im Simulator anwählen und welches iOS-Gerät Sie simulieren.

Wiederholen Sie nun den ersten Teil mit dem Button, also die Maus nach unten ziehen und den Punkt „Center Horizontally in Container“. Vertikal soll der Button aber nicht zentriert werden, denn dann würde er ja genau über dem Label liegen. Hier müssen wir einen weiteren Constrain erzeugen.

Ziehen Sie die Maus mit gedrückter rechter Maustasten nach oben bis der Hintergrund wieder blau wird. Nach Loslassen der Maustaste erscheint wieder das Menü. Diesmal wählen Sie „Vertical Spacing to Top Layout Guide“. Damit legen Sie fest, dass der Button stets einen festen Abstand zum oberen Rand des Displays haben wird. Wenn Sie das Projekt jetzt kompilieren, werden beide Elemente stets horizontal zentriert und mit ausreichend Abstand von einander positioniert auf dem Bildschirm erscheinen, egal, welches iOS-Gerät Sie simulieren und wie Sie es halten.

Der Code

Sie merken, Xcode ist sehr mächtig. Bis jetzt haben wir noch keine einzige Zeile Code programmiert, doch das ändert sich jetzt, denn wir wollen dem Button eine Funktion zuweisen.

Auch hier arbeitet Xcode zunächst grafisch orientiert. Um eine Verknüpfung zwischen Interface-Elementen und dem Code herzustellen, kann man ganz einfach die Maus benutzen. Dazu muss man aber beide Teile, also das Storyboard und den Code-Editor gleichzeitig auf den Bildschirm bringen. Das passiert, wenn Sie im Xcode-Fenster oben rechts auf den Knopf mit den zwei überlappenden Kreisen klicken.

Damit man Verknüpfungen zwischen den Interface-Elementen und dem Code herstellen kann, muss man beide Editoren auf dem Bildschirm haben.
Vergrößern Damit man Verknüpfungen zwischen den Interface-Elementen und dem Code herstellen kann, muss man beide Editoren auf dem Bildschirm haben.

Klicken Sie nun wieder mit der rechten Maustaste auf das Label und ziehen Sie die Maus rüber auf den Code-Editor direkt unter die Zeile

Class ViewController: UIViewController {

Lassen Sie die rechte Maustaste los. Es erscheint wieder ein Kontextmenü. Hier geben Sie dem Label einen Namen, unter dem es im Code ansprechbar sein soll. Wir tippen „myLabel“ in die Zeile neben „Name“. Klicken Sie dann auf „Connect“. Xcode stellt jetzt die Verbindung her und fügt die Zeile

@IBOutlet weak var myLabel: UILabel!

an die Stelle im Code ein, an der Sie die Maustaste losgelassen haben. Diese Zeile deklariert eine Variable als Ausgabemedium, in diesem Fall ein einfaches Text-Label. Das Label und dessen Textinhalt ist nun vom Code aus unter dem Namen „myLabel“ ansprechbar.

Ganz ähnlich gehen Sie nun mit dem Button vor. Auch hier ziehen Sie mit der rechten Maustaste eine Verbindung in den Code-Editor, diesmal direkt unter die „@IBOutlet“-Zeile von eben. Wenn Sie die Maustaste loslassen, erscheint wieder das Kontextmenü. Hier müssen wir aber bei „Connection“ noch den Punkt „Action“ auswählen, denn der Button soll ja anklickbar sein, also eine Aktion ausführen. Bei „Name“ tippen wir „myButtonPressed“ ein und klicken wieder auf „Connect“. Nun fügt Xcode die Zeile

@IBAction func myButtonPressed(sender: AnyObject) {}

ein. Diese Zeile deklariert eine Funktion in der wir nun festlegen, was passieren soll, wenn man auf den Knopf tippt.
Nun geben wir tatsächlich das erste und einzige Mal selber Code ein. Tippen Sie in der Funktion nach der ersten geschweiften Klammer: die Zeile „myLabel.text = „Hallo Welt!“ ein.

Dies ist die einzige Zeile Code, die man manuell eintippen muss. Hier wird der Text des Labels geändert.
Vergrößern Dies ist die einzige Zeile Code, die man manuell eintippen muss. Hier wird der Text des Labels geändert.

Mit dieser Zeile ändern Sie die Eigenschaft „text“ des Label-Objekts „myLabel“ in „Hallo Welt!“. iOS merkt zur Laufzeit automatisch, wenn sich Objekte ändern und zeichnet diese neu. Um einen Redraw müssen Sie sich also nicht kümmern.

Das war es also schon! Wenn Sie das Projekt nun kompilieren und im Simulator starten, ändert sich der Text des Labels von „Label“ in „Hallo Welt!“, sobald Sie auf den Button tippen. Gratuliere, damit haben Sie Ihre erste in Swift programmierte iOS-App geschrieben.

Jetzt heißt es üben, üben. üben. Viel Erfolg!

0 Kommentare zu diesem Artikel
2188410