iOS Development with Swift 3

iOS Development with Swift 3

Audience

Novice developers who want to build iOS native applications with Swift and the Xcode development tools should attend this class.

Prerequisites

Attendees should have:

  • Experience with an object-oriented language such as Java, C/C++ or Python
  • Familiarity with using OS X and iOS devices

Duration

5 days. Hands on.

Course Objectives

This course is about building iOS native applications with Swift and the Xcode development tools. Attendees will:

  • Develop a thorough understanding of the Swift programming language, with an introduction to the underlying Objective-C
  • Understand iOS application architecture
  • Get comfortable working with the Apple development tools
  • Design user interfaces using storyboards and understand the generated code
  • Develop good habits for building performant, testable and maintainable apps for iOS devices

Course Content

Introduction
iOS Devices and the iOS Operating System
Swift 3, Objective-C, Xcode and related tools
The Apple Developer Program and typical development workflows

Swift Fundamentals
Introduction to Swift structure, syntax and semantics
Using Playgrounds
Declaring constants and variables with identifiers
Basic data types and optionals
Conditionals and loops
Declaring, scoping and using functions
Function Types
Closures and Extensions
Access control and type casting
User defined types
Collections
Understanding Automatic Reference Counting (ARC)
Computed properties, property observers and inheritance
Initialization and deinitilization

Unit Testing and Performance Metrics
XCTest Framework
Xcode testing and monitoring tools

iOS Design Architecture
Model View Controller (MVC) architecture as applied to iOS
Creating view controllers
Using storyboards with outlets and actions
Scenes and segues
Moving data between controllers
Navigation controllers

Layout and Auto Layout
Autoresize masks
Implementing and altering layout constraints
Resolving conflicting constraints
Content hugging and compression resistance
Variants

Protocols
Optional members
Loose coupling

Table Views
Styles
Data Sources and delegates

Error Handling
Representing and throwing errors
Handling errors
Cleanup actions
Guards

Networking
URL loading system
Understanding NSURLSession
Creating and managing asynchronous downloads
Strings and images
Dealing with JSON for data transfer
Multithreading

Local Storage
User defaults
Sandboxing
Working with files
Archiving
SQLite
Core data

Multitouch Taps and Gestures
Touches and Taps
Notification methods
Gesture recognizers

Drawing and Animation Overview
Core Graphics
Points, coordinates and pixels
Graphics Context
Core Animation and transformations
UIView core animation blocks

App states
App States
Best Practices
States and Lifecycle
Moving to the background
Memory usage
Background execution

Notifications
Local notifications
Push notifications

Running on Physical Devices and Emulators
Project Configuration
Launching an App

Performance and Power Optimization
Measuring Performance
Responsiveness
Memory Usage
Networking

iOS Security Overview
iOS security features and architecture
Sandboxing and app interactions
Securing data storage

Application Security
iOS permissions
Writing secure iOS applications
Protection techniques and their circumvention
Input validation
Improper use of security features
Time and state problems

Deployment
Icons and Launch Images
Archiving for production
Distribution

Public Courses

On-Site Courses

Can't attend one of our public classes? Booking for multiple people?

All our courses are available on your site! Delivered for your staff, at your premises.

Contact us to find out more...