iOS Training Outline
curriculum made for the real world
Module 1: Learner
OOPS Concepts
Implement basic Swift features like Xcode project setup, Playgrounds, Constants , Variables, Properties: Stored, Computed , Static, Data Types, Explicit/Implicit type declaration, Optional variables, Control Statements (if , if else), Array, Dictionary, set , tuple, Loops (for loop, while loop),
Functions(declaration, body, calling ), Optional binding (If let, guard let, nil coalescing), Optional Chaining, Protocols , Enum, . Struct, Class, Struct vs class, Initializers, Class/Protocol extension, Closures
App life cycle and View Controller Life Cycle
Create Storyboard , Xib and basic UI controls like UILabel , UIButton, TableView, Custom Table View Cell, Navigation View Controller -Connect IBOutlets and IBActions
Auto layout constraints, Leading, Trailing, Top , Bottom etc -Size Classes
Json Structure and Parse Using JSON Decoder
Apply Apple networking class URLSession to do Rest API Call
Navigate from one view Controller to another and pass data
Understand MVC architecture
Writing basic Unit tests using XCtest for logic parts
Tab Bar controller, Handling Multiple Storyboards
Collaboration on Git with a large team, fixing merge conflicts in Story boards ,project files, Swift files
Apply Core Location framework to get users current location and displaying on Map using MapKit Framework
Module 2: Practitioner
Understand MVVM architecture and creating MVVM project from scratch
Compare MVC and MVVM and Migrate MVC code to MVVM architecture
Understand Reactive framework Combine, (publisher, Sink, Operators)
Apply Combine to URLSession to do network Api calls
Apply Combine to do data binding in MVVM
Apply Async Await to implement URLSession
Able to perform Code Reviews
Apply Dependency Inversion Principle
Write Unit tests for ViewModel and Network Layer (Mocking and Stubbing)
Apply SwiftUI Concepts to create UI, Understand Test, Buttons, List , Grids, Stacks.
Apply SwiftUI Concepts like State BInding, Observed Object, State Object, Environment Object, View Modifiers, View Builders, GeometricReader, Geometric Proxy
Use POP Concepts (Protocol Oriented Programming)
Implement Swift feature like Generic, Associated Type, Error Handling, Do try catch, try, try!, throw, throws, Escaping/Non Escaping closures, auto closures, Use of struct vs Classes, Dependency Injections (initializers vs function vs global properties), Access Specifiers, Higher Order functions (map,
Reduce, filter, sort, compactMap), Memory Management, Strong, Weak vs Unowned References, Retain Cycle, how to resolve retain cycle, Associated Values
Module 3: Specialist
Implement Swift features like Concurrency, GCD, Operation/Operation Queue, Async Await, Actors, Creational Design Patterns like Singleton, Factory, Behaviour Design Patterns like Protocol Delegation pattern, Strategy Pattern, Used Version control to cr eate branch and merge branches
Security in iOS and write code for SSL pinning to prevent Man in middle attack
Keychain to store small sensitive data
Userdefault to store small non sensitive data
4 Core Data to store Large Data
Core Data Stack, Multithreading in Core Data , Core Data Migration -Integrate 3rd Party Frameworks Using Cocoa Pods and SPM -Creating certificates and provisioning profiles
Creating App file and iPA file
Manually releasing app to Testflight and App Store
Adding 3rd Party Frameworks Like Firebase Crashlytics, Analytics, Alamofire
Module 4: Advanced
VIPER architecture, Migrating from MVC to VIPER -Adding Coordinator Layer in MVVM i.e MVVM C -Adding Repository Layer in MVVM
Clean Architecture
RxSwift to do data Binding
Accessibility (Voice Over, Dynamic Fonts ) -CI/CD tools (Jenkins, Circle CI etc ) -Integration of external system like Azure, AWS
Implement Device Features LIke BaroMeter, Compass, Gyroscope, Magnetometer, Core Bluetooth Connections -Biometric Authentication using LA Framework
Implementing Audio Video Streaming using AVKIT (HLS Streaming)
The course outline above is a general overview of topics covered and skills learned. It is subject to change. Actual course may slightly differ from the outlined topics and assignments.