EIEIOTECHNOVATION
← Training programmes

EIEIO / AUTOMATION & EMERGING TECHNOLOGY

iOS Application Development - Intermediate to Advanced

Course outline

5 days

Duration

5 days

Overview

This is an intermediate to advanced course meant as a follow on course to Application Development - Introduction.

During this course, you will create a reasonably complex Ios program. In the process, it covers storyboards, table view table view controller, editing table view, navigation controllers, camera, auto layout, gesture recognisers, push view controllers and modal view controllers. You will also learn how to use unit tests and debugging tools.

After that you will you will explore advanced topics such as Interoperability with Objective-C, JSON parsing, Collection Views, Core Data, Firebase and Instruments.

Programs you will write:

Food Tracker - A simple meal tracking app. This app shows a list of meals, including a meal name, rating, and photo. A user can add a new meal, and remove or edit an existing meal. To add a new meal or edit an existing one, users navigate to a different screen where they can specify a name, rating, and photo for a particular meal.

FlickrFiles - An app that parses data and displays pictures from Flickr in a UICollectionView

HitList - An app that stores a list using Core Data

UnCloudNotes - An app that stores notes and pictures using Core Data, used to illustrate Core Data Migration

Grocr - An app that uses Firebase to store data online

Course Objectives

Upon completion of this program, participants should be able to:

Create a reasonably complex iOS application, using storyboards, table view, table view controller, navigation controllers, camera, autolayout, gesture recognisers, push view controllers and modal view controllers.

Test an application using unit tests and debugging tools.

Save application data so it persists between runs.

Write apps that combine Objective-C and Swift code.

Write apps that reads and parses JSON data.

Write apps that use Core Data to store information, and perform lightweight migrations.

Write apps that use Firebase to store information online.

Identify performance issues using Instruments.

Course Pre-requisites

Knowledge of a programming language is required. It is recommended for participants to go for the iOS Application Development - Introduction course prior to attending this course.

Day 1

  • 1. Getting Started

Get the tools

Your first program

Simple values

Explicit type declaration

Conversion

Including values in strings

Arrays and Dictionaries

Initializer syntax

Control flow

Optionals

?? operator

Switches

for-in

while

Loop indexes

Functions

Argument labels

Tuples

Variable number of arguments

Nested functions

Functions as return values

Functions as arguments

Closures

Writing closures more concisely

Class

Instance

Initializers

Subclass

Property getters and setters

willSet and didSet

Working with optional values

Enumerations

Raw values

init?(rawValue:)

Case values

Reference

Values associated with case

Structures

Protocols

Adopting a protocol (class)

Adopting a protocol (struct)

Extension

Protocol type

Error handling

Throw and Throws

Do-Catch

Multiple catch blocks

try?

Defer

Generics

  • 2. Build a basic UI

Create a project in Xcode

Identify the function of key files that are created with an Xcode project template

Open and switch between files in a project

Run an app in Simulator

Add, move, and resize UI elements in a storyboard

Edit the attributes of UI elements in a storyboard using the

Attributes inspector

View and rearrange UI elements using the outline view

Preview a storyboard UI using the Preview assistant editor

Lay out a UI that automatically adapts to the user’s device size using Auto Layout

  • 3. Connect the UI to code

Explain the relationship between a scene in a storyboard and the underlying view controller

Create outlet and action connections between UI elements in a storyboard and source code

Process user input from a text field and display the result in the

UI

Make a class conform to a protocol

Understand the delegation pattern

Follow the target-action pattern when designing app architecture

Day 2

  • 4. Work with View Controllers

Understand the view controller life cycle and when its callbacks occurs, such as viewDidLoad, viewWillAppear and viewDidAppear

Pass data between view controllers

Dismiss a view controller

Use gesture recognizers as an additional level of generating events

Anticipate object behavior based on the UIView/UIControl class hierarchy

Use the asset catalog to add image assets to a project

  • 5. Implement a Custom Control

Create and associate custom source code files with elements in a storyboard

Define a custom class

Implement an initializer on a custom class

Use UIView as a container

Understand how to display views programmatically

  • 6. Define your data model

Create a data model

Write failable initializers on a custom class

Demonstrate a conceptual understanding of the difference between failable and nonfailable initializers

Test a data model by writing and running unit tests

Day 3

  • 7. Create a table view

Understand the key components of a table view

Create and design a custom table view cell

Understand the roles of table view delegates and data sources

Use an array to store and work with data

Display dynamic data in a table view

  • 8. Implement Navigation

Embed an existing view controller within a navigation controller in a storyboard

Create segues between view controllers

Edit the attributes of a segue in a storyboard using the Attributes inspector

Pass data between view controllers using the prepareForSegue(_:sender:) method

Perform an unwind segue

Use stack views to create robust, flexible layouts

  • 9. Implement Edit and Delete behaviour

Differentiate between push and modal navigation

Dismiss view controllers based on their presentation style

Understand when to use different type cast operators for downcasting

Leverage optional binding to check for complex conditions

Use segue identifiers to determine which segue is occurring

  • 10. Persist Data

Create a structure

Understand the difference between static properties and instance properties

Use the NSCoding protocol to read and write data

  • 11. Submitting your App to the App Store

Create an Apple Developer account

Create Developer Certificates

Create your app’s App ID

Register your device

Create profiles

Create an icon for your app

How to take screenshots of your App

Uploading your App to the App Store

Day 4

  • 12. Interoperability

How to use Objective-C classes in Swift

Add Objective-C implementation

Add Bridging Header

Add Objective-C Header

Build your class

Add Class to Bridging Header

Use your object

Using Swift Classes in Objective-C

Create New Swift Class

Import Swift Files to Objective-C Class

Use your class

  • 13. JSON Tutorial

Getting Started

Parsing JSON the Native Swift Way

Parsing JSON the Gloss Way

Retrieving Remote JSON

  • 14. Collection Views

Getting Started

Anatomy of a Collection View

Introducing FlickrSearch

Starting Your Collection

Fetching Flickr Photos

Creating Custom UICollectionViewCells

Adding a Header

Interacting with Cells

Day 5

  • 15. Getting Started with Core Data

Getting Started

Modeling your Data

Saving to Core Data

Fetching from Core Data

  • 16. Lightweight Migrations in Core Data

When to Migrate

The Migration Process

Types of Migrations

Getting Started

A Lightweight Migration

Inferred Mapping Methods

Where to go from here?

  • 17. Firebase

Getting Started

Setting up a Firebase account

Creating a connection to Firebase

Adding New Items to the List

Retrieving data

Synchronizing Data to the Table View

Removing Items From the Table View

Checking Off Items

Sorting the Grocery List

Authenticating Users

Registering Users

Logging Users In

Observing Authentication State

Monitoring Users’ Online Status

Displaying a List of Online Users

Enabling Offline

  • 18. Instruments

Getting started

Time for Profiling

Drilling Deep

Allocations,allocations,allocations

Talking about my generation

Strong Reference Cycles

Programme scope, delivery arrangements and suitability are confirmed during enquiry.