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.