iOS(Swift) — Course Plan. iOS Native Apps using Swift
By: Khurshidbek Kurbanov
Tags: Swift, Swiftui, iOS, Pdp, iOS App Development

iOS Native Apps using Swift

Swift — Beginner Swift — Intermediate Swift — Advanced iOS — Beginner iOS — Intermediate iOS — Advanced iOS — Instagram Clone iOS — Architecture Patterns

Swift — Beginner

1- Introduction

· Overview

· iOS / OS X

· Swift Project

· Obj-C vs Swift

· Swift 5

· Cocoa Frameworks

· Apple Account

· Environment

· xCode IDE

· Playground

· Tasks

2- Basic Syntax

· Hello World

· Import in Swift

· Tokens, Comments

· Semicolon

· Identifiers

· Keyword

· Whitespaces

· Literals

· Printing in Swift

· Tasks

3- Data Types

· Build-in Data Types 1

· Build-in Data Types 2

· Bound Values

· Integer Bound

· Type Aliases

· Type Safety

· Type Inference

· Numeric Literals

· Integer Conversion

· Float Conversion

· Tasks

4- Variables

· Variable Declaration

· Type Annotations

· Naming Variables

· Printing Variables

· Let vs Var

· Boolean

· Tuples 1

· Tuples 2

· Tuples 3

· Optionals

· nil

· Tasks

5- Optionals, Tuples, Constans, Literals

· Optional

· Forced Unwrapping

· Automatic Unwrapping

· Optional Binding

· Tuple

· Constans Declaration

· Type Annotations

· Naming Constans

· Printing Constans

· Integer Literals

· Floating-point Literals

· String Literals

· Boolean Literals

· Tasks

6- Operators

· Arithmetic Operators

· Comparison Operators

· Logical Operators

· Bitwise Operators 1

· Bitwise Operators 2

· Assignment Operators

· Range Operators 1

· Range Operators 2

· Misc Operators

· Tasks

7- Decision Making

· If statement

· If…else statement

· If…else if…else statement

· Nested if statement

· Switch Statement 1

· Switch Statement 2

· The ? : Operator

· Tasks

8- Loops

· For-in 1

· For-in 2

· While loop

· Repeat…while loop

· Continue statement

· Break statement

· Fallthrough statement

· Tasks

9- Strings

· Create a String

· Empty String

· String Constans

· String Interpolation

· String Concatenation

· String Length

· String Comparison

· String Iteration

· Unicode Strings

· String Functions $ Operators

· Tasks

10- Characters, Arrays

· Empty Character Variables

· Accessing Character from Strings

· Concatenating Strings with Characters

· Creating Arrays

· Accessing Arrays

· Modifying Arrays

· Iterating Over an Array

· Adding Two Arrays

· The Count Property

· The empty Property

· Tasks

Swift — Intermediate

1- Sets

· Creating Sets

· Accessing and modifying Sets

· Iterating over a Set

· Performing Set operations

· Intersections

· Union

· Subtracting

· Symmetric difference

· Set equality operations

· Set membership operations

· Set functions & properties

· Tasks

2- Dictionaries

· Creating Dictionary

· Sequence Initialization

· Filtering Dictionary

· Grouping Dictionary

· Accessing Dictionary

· Modifying Dictionary

· Remove Key-Value Pairs

· Iterating Dictionary

· Convert To Arrays

· The count Property

· The empty Property

· Tasks

3- Functions

· Function Definition

· Calling a Function

· Parameter and Return Values

· Functions without Parameters

· Functions with Return Values

· Functions without Return Values

· Functions with Optional Return Types

· Local Parameter Names

· External Parameter Names

· Variadic Parameters

· Constant, Variable, I/O Parameters

· Function Types & its Usage

· Using Function Types

· Function Types as Parameter Types & Return Types

· Nested Functions

· Tasks

4- Closures

· Why Closure?

· Closure Syntax

· Closure that contains statements

· Closure that accepts parameter

· Closure that returns value

· Passing Closures as a function parameter

· Trailing Closure

· Autoclosure

· Escaping, No Escaping Closures

· Taks

5- Enumerations

· Enumeration Functionality

· Enumeration Syntax

· Enumeration Names

· Enumeration Climate

· Difference Direction

· Associated Values vs Raw Values

· Enum with Raw Values 1

· Enum with Raw Values 2

· Enum with Associated Values

· Enum Server

· Tasks

6- Structures

· Structure Syntax

· Introducing Structures

· First Structure

· Initializing Struct

· Initializer Rules

· Another Example

· Introducing Methods

· Structures as Values

· Structure Example

· Tasks

7- Classes

· Defining a Class

· Properties

· Methods

· Instance/Object

· Initialization

· Parameters

· Multiple Initializers

· Classes vs Structures 1

· Classes vs Structures 2

· Tasks

8- Properties

· Properties

· Stored Property with Struct

· Stored Property with Class

· Lazy Stored Property

· Computed Property — set1

· Computed Property — set2

· Computed Properties as Read-Only Properties

· Computed Properties as Property Observers

· Type Property

· Tasks

9- Methods

· Syntax of Methods

· Method Example

· Instance Method

· Self-Property in Methods

· Modify Value Types 1

· Modify Value Types 2

· Type Methods

· Math Methods

· Tasks

10- Subscripts

· Subscript Syntax

· subscripting

· Subscript with Struct

· Subscript with Class

· Subscript with Enum

· Subscript Example 1

· Subscript Example 2

· Options in Subscript

· Tasks

Swift — Advanced

1- Inheritances

· Sub and Super Class

· Base Class

· Subclass

· Overriding

· Methods Overriding

· Property Overriding

· Overriding Property Observers

· Final Property to prevent Overriding

· Inheritance Example

· Tasks

2- Initialization 1

· Initializer Role for Stored Properties

· Initialization Syntax

· Initialization Example

· Setting Property Values by Default

· Parameters Initialization

· Local & External Parameters

· Parameters without External Names

· Optional Property Types

· Modifying Constant Properties During Initialization

· Default Initializers

· Tasks

3- Initialization 2

· Memberwise Initialisers for Structure Types

· Initializer Delegation for Value Types

· Class Inheritance and Initialization

· Initializer Inheritance and Overriding

· Failable Initializer

· Failable Initializers for Enumerations

· Failable Initializers for Classes

· Overriding a Failable Initializer

· The Init! Failable Initializer

· Required Initializers

· Deinitialization

· Tasks

4- ARC Overview

· ARC and Memory Management

· ARC Program

· ARC Strong Reference Cycle Class Instances

· ARC Weak and Unowned References

· Weak Reference Program

· Unowned Reference Program

· Strong Reference Cycles for Closures

· Weak and Unowned References

· Tasks

5- Optional Chaining

· Optional Chaining

· Optional Chaining with “!”

· Optional Chaining with “?”

· Defining Model Classes for Optional Chaining & Accessing Properties

· Calling Methods Through Optional Chaining

· Accessing Subscript Program1

· Accessing Subscript Program2

· Linking Multiple Levels of Chaining

· Chaining on Methods with Optional Return Values

· Tasks

6- Type Casting

· Type Casting in Swift

· Defining a Class Hierarchy

· Type Checking

· Downcasting

· Typecasting with Any

· Typecasting with Any Object

· Tasks

7- Extensions

· Extension in Swift

· Extension Syntax

· Computed Properties

· Initializers

· Methods

· Mutating Instance Methods

· Subscripts

· Nested Types

· Tasks

8- Protocols

· Protocol Syntax

· Property and Method Requirements

· Mutating Method Requirements

· Initializer Requirements

· Protocols as Types

· Adding Protocol Conformance with an Extension

· Protocol Inheritance

· Class Only Protocols

· Protocol Composition

· Tasks

9- Generics

· Why Generic?

· Simple Generic

· Simple Function

· Generic Function

· Simple Struct

· Generic Struct

· Extending a Generic Type

· Associated Types

· Tasks

10- Access Control

· Access Level & Definition

· Access Control Syntax

· Access Control for Function Types

· Access Control for Enumeration Types

· Access Control for Sub Classes

· Access Control for Protocols

· Access Control for Extensions

· Access Control for Generics

· Access Control for Type Aliases

· Swift Encoding and Decoding

· Tasks

iOS — Beginner

1- Introduction

· iOS App Development

· What we have learned?

· Accounts

· MacOS

· IDE for iOS

· iOS Simulator

· iOS Device

· Hello PDP

· Run on Simulators

· Get Familiar with Xcode

· Interface Builders

· Quick Links

· Tasks

2- App Structure

· Storyboard + Swift

· SwiftUI + Swift

· Interface Builders

· Project Storyboard

· Project XIB

· Project SwiftUI

· Structure (XIB)

· Change App Name

· Change App Icon

· Local Images

· Tasks

3- Interface Beginner

· Actions, Outlets

· Gesture Recognizer

· Add a Text Field

· Text Field Placeholder

· Text Field Keyboard

· Add a Label

· Add a Button

· Outline View

· Preview Interface

· Adaptive Interface

· Tasks

4- Adopt Auto Layout

· Interface Issue

· Single View

· Vertical Views

· Horizontal Views

· Stack View — Vertical

· Stack View — Horizontal

· Label, Text Field, Button

· Hugging & Compression Priority

· Center Layout

· Equal Layout

· Complex Layout

· Tasks

5- Interface Intermediate

· Label

· Button

· Text Field

· Image View

· Text View

· Switches

· Sliders

· Alerts

· Icons

· Tasks

6- Interface Advanced

· Material Design

· Navigation Bar

· Navigation Shadow

· Open New Controller 1

· Open New Controller 2

· Navigation Translucent

· Table View Simple

· Table View Complex

· Tasks

7- Xcode vs Github

· Github, New Project

· Select Account for Github

· Select Github Type

· SignIn to Github

· Creating an access token

· Push to Github

· Github Remote and Push

· Push to Github again

· Tasks

8- Insta SignIn, SignUp

· Sign In and Sign Up

· Project Setup

· Scene Delegate

· App Delegate

· Asset Icons

· Base Controller

· Sign In Controller

· Sign Up Controller

· Tasks

9- Insta Timeline

· Timeline & Feed

· Navigation Bar

· Table View

· Table View Cell

· Cell XIB Design

· Prepare Posts

· Timeline Clone

· Tasks

10- CollectionView (V,H) and ScrollView

· App Delegate and Scene Delegate

· Asset Icons

· Collection Page UI

· Scene Page UI

· Vertical Collection View

· Horizontal Collection View

· Why Scroll View?

· Constrains + Layout Guides

· Stack View + Equal Width

· Single View + Stack Height

· Scroll View + Multi Stacks

· Tasks

iOS — Intermediate

1- SwiftUI Essential

· Why SwiftUI?

· Create SwiftUI Project

· Resume on Preview

· Run with Simulators

· Creating SwiftUI View

· Customize the Text View

· Command-Click for Inspect

· Using Label and Button

· Tasks

2- SwiftUI Beginner

· TextField

· TextEditor

· SecureField

· Image

· Button

· Link

· NavigationLink

· ToolbarItem

· Toggle

· Map

· DatePicker

· ProgressView

· Stepper

· Tasks

3- SwiftUI Intermediate

· HStack

· LazyHStack

· VStack

· LazyVStack

· ZStack

· List

· ScrollView

· LazyHGrid

· LazyVGrid

· Form

· Spacer

· Divider

· Tasks

4- SwiftUI Advanced

· Navigation Toolbars

· Navigation Bars

· Screen Pushing and Present

· Close Screen with Pushing

· Close Screen with Present

· Sending Data to Screen

· Receiving Data from Screen

· TableView with Item

· TabView with Page

· Alert

· Action Sheet

· Tasks

5- SwiftUI Animations

· Credit Card UI

· Linear Animation

· Spring Animation

· Curve Animation

· Blur Animation

· Real Heart Example

· Airbnb Lottie — iOS

· Add Package Dependencies

· Lottie Json Flies

· Lottie View Class

· Lottie Real Example

· Tasks

6- Insta SignIn, SignUp

· Sign In and Sign Up

· Project Setup

· Scene Delegate

· App Delegate

· Asset Icons

· Base Controller

· Sign In Controller

· Sign Up Controller

· Tasks

7- Notification Center, Observable Object

· Sign In, Sign Up Design

· Navigation Center — Starter Screen

· Navigation Center — Sign In Screen

· Navigation Center — Home Screen

· Observable Object — App Scene

· Observable Object — Starter Screen

· Observable Object — Sign In Screen

· Observable Object — Home Screen

· Tasks

8- Instagram Timeline

· Instagram Timeline & Feed

· Timeline — Home Screen

· Timeline — Post Item

· Timeline — Story Item (Friend)

· Timeline — Story Item (Adding)

· Tasks

9- Facebook Timeline

· Facebook Timeline & Feed

· Timeline — Home Screen

· Timeline — Live, Photo, Room

· Timeline — Create Room

· Timeline — Create Story

· Timeline — Post List

· Timeline — Post Item

· Tasks

10- Flexibility and Gradient

· Vertical Equal Views

· Horizontal Equal Views

· Proportional Views

· Using Spacer

· Using Geometry Reader

· Flexible View with UIScreen

· Flexible Views with Geometry Reader

· Linear Gradient

· Radial Gradient

· Angular Gradient

· Tasks

iOS — Advanced

1- Dependency Managers

· Terminal — clear & ls

· Terminal — cd & cd ..

· Networking Library — Alamofire

· iOS Dependency Managers

· Cocoa Pods

· Alamofire with CocoaPods

· Swift Package Manager (SPM)

· Alamofire with SPM — Github

· Alamofire with SPM — Target

· Tasks

2- Localization

· Localization / Internationalization

· Localizable.strings

· Localize… button

· Add new languages

· Put translated texts

· LocalizedStringKey & Preview

· Languages — English, Russian, Uzbek

· Localized Bundle Extension

· Change local languages

· Tasks

3- @State, @ObservedObject, @EnvironmentObject

· First Screen with @State

· Second Screen with @State

· Observable Object Class

· First Screen with @ObservableObject

· Second Screen with @ObservableObject

· Environment Object in SceneDelegate

· First Screen with @ EnvironmentObject

· Second Screen with @ EnvironmentObject

· Tasks

4- UserDefaults, Keychain

· What is UserDefaults?

· Integer, String, Boolean, Array, Dictionary

· Store String using Custom Class

· Custom Object in UserDefaults

· Store Object using Custom Class

· Store String using Observed Class

· Store Object using Observed Class

· Keychain and General Usage

· Tasks

5- Local Database, Core Data

· SQL, NoSQL, Core Data

· Add Entity using Core Data

· Task Cell and Protocol

· Task List with @FetchRequest

· Add Task with managedObjectContext

· Task List without Protocol

· Add Task without Protocol

· Delete Task with manaagedObjectContext

· Tasks

6- Network Request — Alamofire

· UI, Controller, Server

· Talk with Server Developers

· Check API with Postman

· Enable HTTP — Info.plist

· Alamofire with SwiftPM

· Custom Class for Alamofire 1

· Custom Class for Alamofire 2

· Post List Api

· Single Post Api

· Create Post Api

· Update Post Api

· Delete Post Api

· Tasks

7- Response Parsing — Lifecycle

· Request and Response

· JSON and XML Responses

· Parsing JSON starts with Object

· Parsing JSON starts with List

· Show parsed posts in UI

· Convert JSON String to Object

· View Lifecycles

· Tasks

8- Firebase Setting, Auth

· Firebase, App Development Platform

· Sign In Interface

· Sign Up Interface

· Home Interface

· Login to use Firebase

· Create a Firebase project

· Firebase Console

· Register App using Bundle ID

· Add GoogleService-Info.plist into the Root

· Firebase Authentication

· Podfile and Configuration

· Session Store and User Classes

· Starter Screen with Session Store

· SignIn Screen with Session Store

· SignUp Screen with Session Store

· Home Screen with Session Store

· Tasks

9- Firebase Database

· Realtime Database and Podfile

· Realtime Custom Class

· Post List and Add Post UI

· Post Object / Instance

· Posts in Home Screen

· Post in AddPost Screen

· Tasks

10- Firebase Storage

· Storage and Podfile

· Permission types in iOS

· Set Permissions in Info.plist

· Storage Custom Class

· Pick Image from Gallery

· Image Loading Framework

· SDWebImageSwiftUI with Pod

· Post Cell with URL Image

· Tasks

iOS — Instagram Clone

(Titles can be changed)

1- Setup Instagram Clone App

2- SignUp, Login UI

3- Home Pager UI

4- Set up Firebase for SignUp, Login

5- Home Search Page

6- Add Post Page

7- Home Feed Page

8- Home Profile Page

9- Profile Edit Page

10- Final Steep and Test App

iOS — Architecture Patterns

(Titles can be changed)

1- MX(X) Essentials

2- Storyboard MVC

3- Storyboard MVP

4- Storyboard MVVM

4- Storyboard VIPER

5- SwiftUI Model-View

6- SwiftUI Redux

7- SwiftUI MVVM