Module 1 - Introducing Swift
- About Swift
- XCode Overview
- Projects and Playgrounds
- Basic Swift Syntax
Module 2 - Data Types
- Primitives
- Integers, Floats, Booleans, Tuples
- Working with strings
- Constants and Variables
- Literals
- Type Aliases
- Optionals
Module 3 - Basic Syntax
- Math and Logic operations
- Defining Arrays and Collections
- Controlling Program Flow with conditionals and loops
- Enumerations
- Nested Types
Module 4 - Functions and Closures
- Defining a Function
- Passing parameters
- Returning single and multiple return values
- Parameter Naming
- Variadic, constant, variable and In-Out parameters
- Closures
Module 5 - Classes and Structures
- Value types explained
- Defining structures
- Assigning structure instances
- Reference Types
- Defining Classes
- Differences between Value and reference types and when to use
- Setting up Initializers and de-initializers
Module 6 - Properties in detail
- Stored Properties
- Lazy and Computed properties
- Working with Property Observers
- Encapsulation?
Module 7 - Methods
- Defining Instance and Type Methods
- Method naming
- Mutating Methods
- Subscripts
Module 8 - Using Inheritance and Polymorphism
- Creating Subclasses
- Overriding Methods, Properties and Observers
- Initialization of inherited types - Chaining
- Casting and subtype polymorphism
Module 9 - Automatic Reference Counting
- Reference Counting Explained
- ARC Under the hood
- Strong and Weak references
- Unowned references
- ARC and Closures
Module 10 - Protocols and Extensions
- What is a protocol
- Implementing a protocol
- Delegation
- Protocol Inheritance
- Checking conformance
- Extending types with Extensions
Module 11 - Generics
- Why Generics
- Generic Functions
- Generic Types
- Constraints
Module 12 - Bringing it all together
- Creating a simple iPhone app with Swift