iOS-Apps entwickeln mit Swift und Xcode

Termine für diese Veranstaltung bieten wir gerne nach Rücksprache an.

Inhalt

Nach der iOS und Swift-Schulung sind Sie bestens vorbereitet, eigene iPhone und iPad-Apps umzusetzen:

  • Beherrschen Sie die App-Programmierung in der Programmiersprache Swift
  • Meistern Sie den Umgang mit den Frameworks des iOS SDK
  • Setzen Sie die Xcode IDE und die Tools des SDKs effektiv ein
  • Veröffentlichen Sie Apps im Apple App Store
  • Lernen Sie zahlreiche Tipps & Tricks, die Ihnen den Arbeitsalltag als iOS-Entwickler erleichtern

Agenda

Tutorial: iOS-Projekte in Xcode

  • Wie werden iOS-Projekte mit Xcode erstellt?
  • Wie sind Xcode-Projekte im Dateisystem und in der IDE strukturiert?
  • Welche Tastenkürzel sind für die Verwendung von Xcode hilfreich?
  • Was ist bei der Verwendung von Xcode zu beachten?
  • Welche Unterschiede zwischen Mac und PC sind zu beachten?

Überblick: iOS SDK

  • Wie ist das iOS Software Development Kit aufgebaut?
  • Welche Frameworks stehen zur Verfügung?
  • Wo findet man Informationen und Beispiele zu zur Verfügung stehenden Klassen und Frameworks?

Ausführen von Apps im Simulator und Geräten

  • Wie werden Apps im Simulator, auf iPhones und iPads ausgeführt?
  • Wie spielen Zertifikate, App IDs, Device IDs und Provision Profiles zusammen und was ist bei der Einrichtung zu beachten?
  • Was ist beim Testen im Simulator zu beachten?

Prototyping und UI-Design von Apps

  • Welche Werkzeuge empfehlen sich für die Gestaltung von iOS Apps?
  • Wie können Prototypen für die Abstimmung und Anforderungsfindung in Xcode erstellt werden?
  • Welches Vorgehen ist bei paralleler Entwicklung für iOS und Android sinnvoll?

UIKit

  • Welche Widget-Klassen stehen in UIKit zur Verfügung?
  • Wie werden Oberflächen programmatisch erstellt?
  • Wie spielen UIView und UIViewController zusammen?
  • Wie werden Screens einer iPhone-App mittels UIViewController-Klassen strukturiert?
  • Wie werden UIViewController in die App eingebunden?

Storyboards und Interface Builder

  • Wie werden Storyboards verwendet und mit dem Xcode Interface Builder erstellt?
  • Wie werden Übergänge zwischen Controllern realisiert?
  • Wie werden Navigations-Hierarchien erstellt und zwischen den Screens navigiert?
  • Wie spielen UINavigationController und die enthaltenen UIViewController zusammen?
  • Wie werden Tabellen- und Listensichten mit Interface Builder erstellt?

Einführung in Swift

  • Worin liegen die Besonderheiten der Swift-Programmiersprache?
  • Welche grundlegenden Datentypen gibt es und wie werden diese verwendet?
  • Wie werden in Swift Methodenaufrufe getätigt?
  • Wie werden Swift-Objekte konstruiert?
  • Wie werden gängige Klassen der Swift Standard Library wie String, Array und Dictionary verwendet?

Objective-C vs. Swift

  • Wo liegen die Unterschiede zwischen Objective-C und Swift?
  • In welchen Fällen macht die Verwendung von Objective-C Sinn?
  • Was ist beim Paralleleinsatz von Objective-C und Swift zu beachten?

Swift: Klassen- und Methodendeklaration

  • Wie werden Funktionen, Klassen und Methoden in Swift deklariert?
  • Wie werden Eigenschaften deklariert?
  • Welche Besonderheiten gibt es bei der Vererbung von Klassen in Swift?
  • Welche Rolle spielt NSObject in Swift?

Storyboards: Interface Builder, Outlets und Actions

  • Wann empfiehlt sich die Erstellung im Code, wann die Verwendung vom Interface Builder?
  • Wie werden im Interface Builder erstellte Oberflächen mit dem Code verknüpft?
  • Wie werden UI-Ereignisse behandelt?
  • Wie funktionieren Actions und Outlets?

Swift: Enums und Optionale Werte

  • Wie werden in Swift Enumerations-Typen deklariert und wo macht der Einsatz Sinn?
  • Wie funktionieren Optionals in Swift?
  • Wie können durch die Verwendung von Optionals Probleme vom Compiler erkannt werden?
  • Welche Möglichkeiten gibt es, optionale Werte auszupacken und wann verwendet man welchen Mechanismus?
  • Wie funktioniert das Binden von optionalen Werten mit if let?

Swift: Protokolle

  • Was sind Protokolle und wozu werden sie verwendet?
  • Wie werden Protokolle deklariert?
  • Welche Rolle spielen Protokolle in iOS APIs?

Tabellen darstellen mit UITableViewController

  • Wie wird ein UITableViewController zur Anzeige von dynamischen Daten konfiguriert?
  • Was ist bei großen Datenmengen zu beachten und wie optimiert UITableViewController die Verwendung von Tabellenzellen?

Modell-View-Controller-Pattern

  • Wie können Controller nach dem Modell-View-Controller-Pattern strukturiert werden?
  • Wie erfolgt das Zusammenspiel zwischen den MVC-Komponenten?

Backend-Kommunikation

  • Wie werden Daten von URLs geladen?
  • Wie erfolgt die Kommunikation mit Backend-Servern per REST/JSON/XML?
  • Welche Best Practices empfehlen sich für das Zusammenspiel zwischen Backend und iOS-Apps?

Auto Layout: Positionierung mit Layout-Constraints

  • Wie erstelle ich Oberflächen für unterschiedliche Displaygrößen und Rotationen?
  • Welche Arten von Layout Constraints gibt es?
  • Welches Vorgehen empfiehlt sich, um Layout Constraints für komplexe Oberflächen schnell zu erstellen?
  • Wie erfolgt die Unterscheidung von unterschiedlichen Gerätegrößen?
  • Wie können Layout Constraints programmatisch erstellt werden und wann ist diese Vorgehensweise sinnvoll?
  • Wie spielen programmatische Positionierung und Layout Constraints zusammen?

Navigation mit Storyboard Segues

  • Wie kann die Verknüpfung von mehreren Controllern erfolgen?
  • Wie wird das Zusammenspiel von Controllern im Storyboard und im Controller-Code strukturiert?
  • Wie können Daten zwischen Controllern ausgetauscht werden?
  • Welche View-Controller-Klassen können neben dem Navigations-Controller für Apps verwendet werden?
  • Wie werden mehrere Screens in Tabs oder seitenweise angezeigt?
  • Welche Möglichkeiten gibt es, programmatisch zwischen Controllern zu navigieren?

Swift: Extensions

  • Wie können Klassen um neue Funktionalitäten erweitert werden?
  • Was sind Protocol Extensions und wozu dienen sie?

Delegate-Pattern in Swift

  • Wie können Controller und Komponenten von iOS zusammenspielen?
  • Wie können Controller so strukturiert werden, dass diese modular und wiederverwendbar sind?

Swift Generische Typen

  • Wie werden generische Typen zur Herstellung von Typsicherheit in der Swift Standard Library verwendet?
  • Wie können Generics in iOS-Projekten eingesetzt werden?

Swift: Blöcke

  • Was sind Blöcke und wozu werden sie verwendet?
  • Wie werden in Swift Blöcke deklariert und verwendet?
  • Welche Kurzschreibweisen für Blöcke gibt es und wann ist welche Variante sinnvoll?
  • Wie funktionieren Closures und Captures?
  • Was ist bei der Verwendung von blockbasierten Funktionalitäten in der Swift Standard Library zu beachten?
  • Wie können Blöcke zur Ereignisbenachrichtigung zwischen Komponenten in iOS verwendet werden?

Hintergrundverarbeitung mit OperationQueue

  • Wie werden Operationen in den Hintergrund verlagert?
  • Wie können langläufige, aus mehreren Teilschritten bestehende Operationen nebenläufig ausgeführt werden?
  • Was ist bei der Implementierung von nebenläufigem Code in Apps zu beachten?
  • Wie funktioniert das Zusammenspiel zwischen Hintergrund-Threads und Main-Thread?

Daten asynchron laden mit URLSession

  • Wie können Daten asynchron im Hintergrund von einer URL geladen werden?
  • Wie erfolgt die Benachrichtigung und Aktivitätsanzeige bei Ladevorgängen im Hintergrund?
  • Wie funktioniert die URLSession und welche Möglichkeiten bietet sie?
  • Was ist bezüglich der Sicherheit bei der Verwendung der URLSession zu beachten?

CocoaPods

  • Wie können Komponenten und Standard-Bibliothken in Xcode eingebunden werden, ohne das Quelldateien manuell gemanagt werden müssen?
  • Welche Open Source Komponenten sind empfehlenswert?

Core Data

  • Wie ist das Core Data Framework aufgebaut?
  • Wie werden Schemata definiert und entsprechende Klassen dafür generiert?
  • Wie spielen NSManagedObjectModel, NSManagedObjectContext und NSPersistentStoreCoordinator zusammen?
  • Wie werden Core Data Objekte abgefragt, erzeugt, verändert, gelöscht und gespeichert?
  • Wie greift man zum Debugging auf die Datenbankdateien im Simulator und auf dem Gerät zu?
  • Wie werden Code Data Datenbanken weiterentwickelt und migriert?

Fehlerbehandlung in iOS-Apps

  • Welche Möglichkeiten zur Behandlung von Fehlern in Swift gibt es?
  • Wie funktioniert do-try-catch in Swift und wie werden eigene Fehler definiert?
  • Wie lässt sich die Behandlung von Fehlersituationen in Controllern einer iOS-Apps realisieren?

Testen von iOS-Anwendungen

  • Wie kann Detaillogik von iOS-Anwendungen mittels Unit-Tests getestet werden?
  • Wie lässt sich die Oberfläche von iOS-Anwendungen testen?
  • Wie lässt sich der Build und die Testausführung von iOS-Projekten mittels Continuous Integration Systemen automatisieren?

Mehrsprachige Anwendungen

  • Wie werden Texte im Code und im Interface Builder so extrahiert, dass diese übersetzt werden können?
  • Welche Werkzeuge empfehlen sich für das Pflegen von Übersetzungen?
  • Wie werden die extrahierten Übersetzungen aktualisiert, wenn Texte im Code/Interface Builder geändert werden?
  • Wie kann die Anwendung in verschiedenen Sprachen getestet werden?

Speicherverwaltung

  • Wie funktioniert Speicherverwaltung mittels expliziter Referenzzählung?
  • Wie funktioniert ARC / Automatic Reference Counting?
  • Was ist bei der Speicherverwaltung mit ARC zu beachten?
  • Wie findet und behebt man Speicherlecks?
  • Wie werden Situationen, in denen der Speicher zur Neige geht, behandelt?

Veröffentlichen der Anwendung: App zum Publizieren vorbereiten, iTunes Connect, App Review

  • Wie können Apps unternehmensintern verteilt werden?
  • Wie können Apps an Beta-Tester verteilt werden?
  • Wie werden Apps in den App Store eingestellt?
  • Welche Regeln sind für die Veröffentlichung im App Store zu beachten?
  • Welches sind die häufigsten Probleme beim App Store Review?
  • Wie werden die für die Veröffentlichung im App Store benötigten Provisioning Profiles erstellt und verwaltet?

Datum

02 Nov 2018 - 03 Nov 2018

Veranstalter

engenious GmbH
Phone
+49 6202 9298302
Email
info@engenious.de
QR Code