Swift 3 - iOS 10 Bootcamp

How to write apps for the iPhone and iPad (Three days)

Who it's for

This three day intensive introductory course is for experienced developers who are new to Swift but have some experience with iOS or Mac app development. It is an abridged and accelerated version of Introduction to iOS Programming with Swift.

What you'll learn

This course will introduce you to the fundamentals of iOS 10 app development using Swift 3 on Xcode 8.

The first portion of the class will get you up to speed with the Swift Programming language. We work in playgrounds, exploring the ins and outs of programming with Swift.

In part two we dig deeper into idiomatic Swift and work with functions as closures, higher-order functions, sequences, and handling errors.

The remainder of the course introduces iOS 10 application development. We begin with single view, create a UI and connect it to code using the latest techniques introduced for iOS 10. We work with MVC and MVVM and then move on to apps with multiple scenes. You will learn a variety of methods of presenting and dismissing scenes while communicating information between the view controllers. We'll also look at table views, navigation controllers, and tab bar controllers. We'll take a quick look at Core Data and web services.

What you need

You need a Mac running El Capitan or Sierra with the latest publicly shipping version of Xcode 8.x installed. You'll work with Xcode projects and playgrounds and also the iOS Simulator throughout the course.

Booking Info

For information about booking a course for your group, company, or public event or more details on course content, contact booking@editorscut.com.


Swift Kickstart

A Simple iOS Project

Hello, World! (it's kind of the law)

Quick introduction to Xcode 8

A moment with GUI creation in Interface Builder

Swift Properties and Methods

Connecting Outlets and Actions in Swift

The iOS lifecycle

Meet the iOS Simulator

Language Fundamentals


Explore a playground in Xcode 8

Create and call functions

Function overloading in Swift

Default values for parameters

Local and external parameter names

Tuples and variadic parameters

Variables and Constants

Strong type inference in Swift

Let vs. Var

No promotion of numeric types

Where spaces matter

Functions as objects

Optionals and Nil


Create and modify arrays

Collections are homogeneous

Iterating an array

Value and Reference Types

Create and modify dictionaries

A Quick look at Sets

Types and Instances


Base classes


Stored and Computed Properties

By-reference semantics

The init method

Convenience methods

More optionals

Overriding methods




Raw values and more optionals


Computed properties

As property types

Value Types

Associated values



By-value semantics

Default init

Getters and setters

Did set and will set

Mutating methods


Collecting commonality





Protocol extensions

Extension points

Thinking in Swift

Flexible Functions

Understanding Parameters

Inout parameters




Mutable Model

Non-Mutable Model

When Things Go Wrong


ErrorProtocol Structs

ErrorProtocol Enums




Guard Let


Higher-Order Functions

Returning a Function

Returning a Closure

Consuming a Closure

Mapping Arrays

Classic Examples





Functors and Monads

iOS App Fundamentals

Outlets and Actions

Create and configure an outlet and outlet collection

Use the outlet and outlet collection

Create and configure multiple actions

Connection Inspector

Implement the actions


Model View Controller

Understanding View Controllers

Breaking up View Controllers



Passing closures

Simple Models

Custom UI

View Subclasses

Targeting multiple devices

Device specific layouts

Localizing the Storyboard

Localizing Strings

Creating and using designables

Inspectable properties

Multiple Scenes

One App with Two Scenes

Add view controller to storyboard

Configure the second scene

Create a button to trigger the segue

Create and configure a segue

Manual Transitions

Custom view controller subclass

Provide a public property

Implement action to present second scene

Create behavior to dismiss second scene

Forward information

Use the information


Connect Segue from first to second scene

Implement prepareForSegue()

Create Unwind Segues

Create custom segue subclasses

Pass information back and forth

Enhance the UI

Gesture Recognizers

Image Views

Asset Catalogue



Separate Storyboards

Storyboard References

Add a framework

Present content in a separate module

Communicate information forward and back

Minimize coupling


Connect the delegate

Conform to delegate protocol

Closures as an alternative

Table View Based Apps

Separating Concerns

New project using MVVM/MVC


Complicating the model

Using the Module for Insert

Simple Persistence with User Defaults

Table Views

Delegate and Data Source

Connecting to the same model with a different view model

Enable Delete and Move

Using the Module for Insert

Assembling apps from pieces


Tab Bar Controller

Nav Controllers

Connecting multiple scenes

Network Applications


Asynchronous Network Calls

Handling Response

Parsing JSON

Creating Model object

CRUD and Saving to Core Data

Custom Cells

The Data Source and View Model

Cell access to model instance

Cell knowledge of view

Filling the custom cell

Passing Info

Prepare for segues

Segue dependent set up

Passing selected entity to next Controller

Retrieving information for entity from Core Data

Displaying the results