Swift Academy icon

Swift Academy

SWIFTMobileIosFrontendBeginner

Learn Swift to create powerful iOS applications with Swift Academy.

🤖 AI-Powered
Course Overview

Master Swift: Your Complete Path to Apple Development and Beyond with CoddyKit

Are you ready to unlock the power of modern app development and build stunning, high-performance applications for Apple's thriving ecosystem? Welcome to CoddyKit's comprehensive Swift programming language learning path! Swift is more than just a language for iOS and macOS apps; it's a versatile, safe, and incredibly fast language used for everything from mobile and desktop applications to server-side development and machine learning. Whether you're an absolute beginner aspiring to create your first iPhone app or an experienced developer looking to master advanced Swift concepts like structured concurrency and powerful DSLs, CoddyKit offers a meticulously structured curriculum designed to guide you every step of the way. Dive into our expert-crafted mini-courses and transform your coding ambitions into tangible skills, preparing you for a successful career in Apple development and beyond.

Introduction to Swift (Level: A1)

Swift is friendly to new programmers. It's an industrial-quality programming language that's as expressive and enjoyable as a scripting language.

With Swift, you can develop applications for smartphones, tablets, desktops, or servers. Swift is fast, reliable, and interactive and has many features that a modern software language should have.

It is a user-friendly software language with a high-level and easy syntax. Thus, it is preferred by many people who are new to programming. It has many additional features such as optional compared to the Objective-C language used frequently on Apple platforms.

Let's learn Swift, one of the most popular programming languages of recent years, by clicking the Start Course button.

  • Introduction — Introduction

Swift Kickoff: Concepts & Setup (Level: A1)

Start Swift the right way: safety-first design, high performance via native compilation, and readable code that scales.

  • What is Swift? Safety, Performance, Readability — Understand what Swift is and why its design centers on safety, performance, and readability.
  • Install & Tools: Swift toolchain, REPL, swiftc, Editors — Install the Swift toolchain, try the interactive REPL, compile with swiftc, and pick an editor (VS Code or Xcode).
  • First Program & Build/Run (REPL vs swiftc, scripts) — Write your first Swift program, run it in the REPL, compile with swiftc, and save scripts for reuse.

Values, Types & Optionals I (Level: A1)

Learn how Swift handles values and types: constants vs variables, inference, literals, and tuples.

  • let vs var, type inference, literals, tuples — Understand let vs var, type inference, numeric/string literals, and tuples for grouping values.
  • Core types: numbers, Bool, String, Character — Explore Swift's core types: numbers, booleans, strings, and characters.
  • Optionals intro: ?, nil, if let, guard let, ?? — Introduce optionals: declaring with ?, representing missing values with nil, and unwrapping via if let, guard let, and ??.

Control Flow & Patterns (Level: A1)

Master Swift control flow with if/else, switch, loops, and pattern matching.

  • if/else basics — Learn the basics of if/else conditions, truth checks, and nesting in Swift.
  • switch — exhaustiveness, ranges, tuples, where — Use powerful switch with exhaustive cases, numeric ranges, tuple matching, and where clauses.
  • Loops — for-in, while, repeat-while — Learn how to repeat tasks with for-in, while, and repeat-while loops.

Conditional Statements (Level: A1)

In this lesson, we will learn about the conditional concept, which is a must for programming languages.

  • Conditions — Conditions

Swift guard Statement (Level: A1)

In this course, we will learn about the guard, an expression we will use frequently. The use of guard statement is similar to if. Let's learn the guard statement in detail.

  • Guard — Guard

Parameters in Swift (Level: A1)

In this course, we will learn about the useful features of parameters in Swift language.

  • Parameters — Parameters

Swift Closures (Level: A1)

Closures are self-contained blocks of code. A closure is passed as a parameter to the code, or it can be used inside codes. Let's learn how to use closures in Swift.

  • Closures — Closures

Swift Collections (Level: A1)

In this lesson, we will learn about collection types in Swift, which is one of the most important topics.

  • Collections — Collections

Tuple in Swift (Level: A1)

It is a type that is used to keep more than one value in a combined form. Consider a function, this function freezes the latitude and longitude information of a coordinate. In this course, we will learn the concept of tuple in Swift

  • Tuples — Tuples

Collections I (Level: A1)

Work with Swift collections: arrays, dictionaries, and sets. Learn creation, updates, iteration, and mutability.

  • Arrays, Dictionaries & Sets — Create and use arrays, dictionaries, and sets. Iterate, update, and understand mutability.
  • Sets — membership & operations — Use Swift Set for unique elements, fast membership checks, set algebra (union/intersection/subtracting/symmetricDifference), and relations (subset/superset/disjoint).
  • Iteration patterns & mutability — Learn common iteration patterns over arrays/dictionaries/sets, use indices and enumerated(), and understand mutability with let vs var (copy-on-write basics).

Optionals in Swift (Level: A1)

Used to express that an optional variable may not have a value. If a variable of the optional type has a value, this variable is unwrapped and used. Or there is no value. In this course, we will learn the concept of optional in Swift language.

  • Optionals — Optionals

Strings in Swift (Level: A1)

  • String — String

Lazy and Computed Properties (Level: A1)

In this course, we will learn about lazy and computed properties that we will use frequently in our applications.

  • Lazy and Computed Properties — Lazy and Computed Properties

Access Control (Level: A1)

In this course, we will learn about lazy and computed properties that we will use frequently in our applications.

  • Access Control — Access Control

Stored Properties (Level: A1)

Property is added to define the properties of an object. In order to add a property to an object in Swift, the variable or constant definition must be added to the type definition.

  • Stored Properties — Stored Properties

Functions Basics (Level: A1)

Learn how to define and call functions in Swift with parameters, labels, defaults, and variadic arguments.

  • Defining functions, parameters, labels, default/variadic — Define functions with parameters, labels, default values, and variadic arguments.
  • Return values & multiple returns via tuples — Return single values and multiple values using tuples; name elements, ignore with underscore, and use early returns.
  • In-out params & basic error handling (throws) — Mutate arguments with in-out parameters and handle recoverable failures using throws, try, and do/catch.

Subscripts (Level: A1)

Subscripts are a shortcut to access member items of a collection, list, or directory. Use subscripts to set and retrieve values ​​according to the index without the need for separate getter and setter methods.

  • Subscripts — Subscripts

Range Operators (Level: A1)

In this course, we will learn about the range operators provided to us by Swift.

  • Range Operators — Range Operators

Strings & Unicode (Level: A1)

Work with Unicode-correct strings: grapheme clusters, safe indices, substrings, common APIs, and copy-on-write behavior.

  • Strings & Unicode — graphemes, indices, substrings, APIs — Understand Unicode-aware Strings: extended grapheme clusters, String.Index, substrings, common APIs (prefix/suffix/contains, split/join), and copy-on-write performance.
  • Common APIs — prefix/suffix/contains, split/join — Use practical String APIs: hasPrefix/hasSuffix/contains, split into parts, and join arrays back with separators.
  • Performance notes — copy-on-write — Understand Swift String performance: copy-on-write (COW), substring sharing, and how to manage memory efficiently.

Error Handling in Swift (Level: A1)

While the application is running, some errors may occur depending on the code of our application (logic errors, etc.) or depending on the environment in which the application is running. In this lesson, we'll learn about error handling with Swift.

  • Error Handling — Error Handling

Optionals II & Error Handling (Level: A2)

Dive deeper into Optionals with chaining, guard patterns, and combine them with Swift error handling using throws, try, do/catch, and Result.

  • Optional chaining & error handling basics — Use optional chaining, guard patterns, try?/try!, and do/catch to handle absence and errors. Learn Result<T,Error> as an alternative.
  • do/catch & defining errors (enums) — Define error enums, throw them from functions, and handle failures with do/catch patterns (specific cases, catch let, generic catch).
  • Result types — Result<T, Error> — Represent success or failure without throwing using Result<T,Error>. Create results, switch over them, map/flatMap, and bridge to/from throws.

Closures & Capture (Level: A2)

Learn closures in Swift: syntax, shorthand arguments, trailing closure, capture lists, and escaping vs non-escaping.

  • Closures & Capture basics — Understand closure syntax, shorthand args, trailing closure, capture lists, and escaping vs non-escaping.
  • Capture lists — weak/unowned & value capture — Use capture lists to control how closures capture references and values: [weak self], unowned, and value snapshots to avoid retain cycles and subtle bugs.
  • Escaping vs non-escaping, autoclosures — Understand non-escaping (default) closures vs @escaping (stored or used after return), and use @autoclosure for nicer call sites with lazy evaluation.

Structs & Classes I (Level: A2)

Understand Swift's primary types: structs (value semantics) and classes (reference semantics). Learn properties, observers, initializers, and deinitializers.

  • Structs vs Classes, properties & inits — Compare value vs reference semantics; use stored & computed properties, property observers, initializers, and class deinit.
  • Stored vs computed properties, observers — Define stored vs computed properties, create read-only and get/set computed properties, and react to changes with willSet/didSet observers.
  • Initializers & deinit (classes) — Create designated and convenience initializers, provide default values, use failable init where needed, and understand class deinitializers.

Assertions and Preconditions (Level: A1)

Assertions and preconditions are the processes of checking the application at runtime. Before running any code, it checks that certain conditions are met and this usually happens with the bool operator.

  • Assertions and Preconditions — Assertions and Preconditions

Properties & Subscripts (Level: A2)

Enhance Swift types with advanced properties and subscripts. Learn lazy properties, get/set computed props, observers, and subscript access.

  • Properties & Subscripts — Use lazy stored properties, get/set computed properties, property observers, and subscripts for custom indexing.
  • lazy & property observers — Use lazy stored properties for deferred work and observe changes on stored properties with willSet/didSet.
  • Computed properties with get/set — Create computed properties (read-only and read–write) using get/set, enforce invariants in setters, and use access control like private(set).
  • Subscripts for custom indexing — Define custom subscripts to read/write elements using array-like syntax, add safe accessors, support multi-parameter indexing, and even type (static) subscripts.

Modules & SPM Basics (Level: A2)

Learn Swift Package Manager (SPM): initialize packages, modules, layout, build/test, and import dependencies.

  • Swift Package Manager basics — Use Swift Package Manager to create modules, manage dependencies, build, test, and import code.
  • Layout, products & build/test/run — Learn SwiftPM layout (Sources/ and Tests/), products (executables vs libraries), and how to build, test, and run with CLI.
  • Importing modules & semantic versioning basics — Learn how to import external modules, declare dependencies in Package.swift, and manage them with semantic versioning rules.

Protocols & Extensions (Level: B1)

Learn Swift protocols for shared interfaces, add extensions to types, and provide default implementations. Cover static vs instance requirements.

  • Protocols & Extensions basics — Define protocols, make types conform, extend with default implementations, and understand static vs instance requirements.
  • Protocol extensions vs type extensions — Contrast protocol extensions (add default implementations to a protocol, even conditionally) with type extensions (add APIs to one concrete type). Understand dispatch behavior and constraints.
  • Static vs instance requirements — Differentiate between static (type-level) and instance (object-level) requirements in protocols, and learn how conforming types implement them.

Enums in Swift (Level: A1)

In this lesson, we will learn the subject of Enumeration. Enumeration is used to create user-defined types. In the next step, working with this user-defined associated data allows us to write code with high type security.

  • Enumeration — Enumeration

Enums with Power (Level: B1)

Swift enums can hold raw or associated values. Use switch with pattern matching for powerful state modeling.

  • Enums with Power basics — Define enums with raw or associated values, use switch for exhaustive matching, and model states with them.
  • Powerful switch with pattern matching — Write expressive switches: match associated values, ranges, tuples, and add where-clauses. Keep branches exhaustive and readable.
  • Finite state modeling — Model finite states with enums: represent app flows (loading, success, error), enforce exhaustive handling, and prevent invalid combinations.

Structs & Classes II (Level: B1)

Dive deeper into Swift's value and reference types: learn about memberwise initializers, mutating methods, inheritance, and access control.

  • Memberwise init & mutating methods — Understand Swift structs: auto-generated memberwise initializers and the need for mutating methods when changing properties.
  • Inheritance, overriding & final — Create a base class, extend it via inheritance, override methods/properties, call super, and lock behavior with final.
  • Access control (public/internal/fileprivate/private) — Control visibility of APIs across files and modules using public, internal (default), fileprivate, and private. Learn when to expose vs hide.

Generics I (Level: B1)

Build reusable code with generics: write functions and types that work for many data types while keeping static type safety.

  • Generic functions & types — Write generic functions and types with type parameters (e.g., <T>). See how the compiler infers types and keeps code safe and reusable.
  • Constraints (where), type inference — Constrain generic code using where (e.g., Equatable/Comparable or Element constraints) and see how Swift infers generic types at call sites.
  • Generic algorithms on collections — Use generic algorithms like map, filter, and reduce, and write your own functions over Sequence with simple constraints.

Protocols with Associated Types (Level: B1)

Model relationships with associated types in protocols, build generic protocols, and understand how conformers pick concrete types.

  • associatedtype & generic protocols — Define protocols with associatedtype, see how conforming types bind them, and use generic functions with protocol constraints.
  • Type erasure patterns (AnySequence/AnyIterator) — Use AnySequence and AnyIterator to erase concrete sequence/iterator types so APIs can return “a sequence of T” without exposing implementation.
  • When to use existentials (any P) vs generics — Choose between any P (existential types) and generics: heterogeneous storage & dynamic behavior vs compile-time specialization & static guarantees.

Memory Management & ARC (Level: B2)

Understand Swift ARC: how strong references keep objects alive, and how weak and unowned break cycles safely.

  • ARC basics: strong / weak / unowned — Learn ARC reference counting and when to use strong, weak, and unowned to avoid memory leaks.
  • Retain cycles & breaking with weak/unowned — Spot retain cycles between objects and closures, then break them using weak and unowned references safely.
  • Value types to reduce sharing — Prefer value types to avoid accidental sharing: structs/enums copy on assignment, helping isolation, predictability, and thread safety.

Sequences & Algorithms (Level: B2)

Nail Swift's iterable hierarchy: SequenceCollectionBidirectionalCollectionRandomAccessCollection, and pick the right algorithms for each.

  • Sequence/Collection hierarchies — Understand Sequence vs Collection (and Bidirectional/RandomAccess): traversal guarantees, indices, and when algorithms require stronger protocols.
  • Map/Filter/Reduce, lazy sequences — Use map/filter/reduce to transform, select, and combine; then add .lazy to defer work and avoid intermediate arrays.
  • Custom iterators & performance tips — Implement custom iterators/sequences and keep them efficient: single-pass behavior, avoiding extra allocations, and using lazy views.

Operators & Customization (Level: B2)

Create lightweight, readable math-like APIs with operator overloading and custom precedence groups—used sparingly and clearly.

  • Operator overloading & precedence groups — Overload built-in operators for your types and define precedence groups so expressions parse as intended. Keep designs minimal and predictable.
  • Subscripts & custom indices revisited — Define subscripts with get/set, accept multiple parameters (e.g., 2D matrix), and use custom index types (enums) for readable APIs.
  • Hashable/Equatable/Comparable derivations — Let Swift synthesize Equatable/Hashable (and Codable) for simple structs/enums; implement custom Comparable (lexicographic) and manual hash(into:) when needed.

Testing & Diagnostics (Level: B2)

Learn XCTest basics: how to set up a test target, write test cases, and use fixtures (setUp/tearDown) for reliable unit tests.

  • XCTest basics (targets, fixtures) — Set up XCTest targets in Swift packages or Xcode projects, write test cases, and manage fixtures with setUp/tearDown.
  • XCTest basics (targets, fixtures) — Set up XCTest targets in Swift packages or Xcode projects, write test cases, and manage fixtures with setUp/tearDown.
  • Logging, assert/precondition/fatalError — Log state with print/debugPrint, and choose between assert (debug-only), precondition (checked in release), and fatalError (crash) for invariants.

Generics II: Advanced Constraints (Level: C1)

Dive deeper into generics: use conditional conformances and where clauses to make types adopt protocols only when their generic parameters satisfy constraints.

  • Conditional conformances — Make a generic type conform to a protocol only if its type parameter meets constraints (e.g., Box<T>: Equatable where T: Equatable).
  • Recursive constraints & higher-order generics — Write recursive constraints (e.g., nested sequences) and higher-order generic functions that take generic closures/functions.
  • where clauses on extensions — Use where on type and protocol extensions to add APIs only when constraints hold (e.g., Array where Element: Equatable, Collection where Element == Int).
  • where clauses on extensions — Use where on type and protocol extensions to add APIs only when constraints hold (e.g., Array where Element: Equatable, Collection where Element == Int).

Opaque & Existential Types (Level: C1)

Understand opaque result types (some P): hide concrete types behind protocols while keeping static dispatch and generics working.

  • some P (opaque result types): hiding concrete types — Return some P to hide the concrete return type while promising it conforms to P; callers gain static type performance without exposing implementation.
  • any P (existential): trade-offs & dynamic dispatch — Use any P to store or pass heterogeneous conformers behind a protocol. Understand dynamic dispatch, boxing, and limitations with associated types/Self requirements.
  • Choosing between some, any, and generics — Pick generics for homogeneous static typing, some P to hide a fixed concrete type, and any P for heterogeneous polymorphism.

Result Builders & DSLs (Level: C1)

Create lightweight DSLs using @resultBuilder: compose nested structures with clean syntax while generating values behind the scenes.

  • Building mini-DSLs with result builders — Build a tiny DSL using @resultBuilder: define builder functions, compose blocks, and support conditionals/loops for readable construction.
  • Scoped APIs & readability patterns — Apply scoped APIs and naming patterns for DSLs: namespace tokens, group with helpers, and keep blocks small and explicit.
  • Practical examples without UI frameworks — Write small, useful DSLs without UI: config files, simple query builders, text/Markdown emitters, and validation pipelines with @resultBuilder.

Property Wrappers (Level: C1)

Create reusable behaviors with @propertyWrapper: control wrappedValue, expose extras through projectedValue ($var), and configure via initializers.

  • Creating wrappers, projectedValue — Build a custom wrapper, configure wrappedValue, and surface metadata/helpers with projectedValue ($).
  • Reusability and constraints — Design generic wrappers with type constraints (e.g., Value: Comparable), add targeted APIs via where, and compose multiple wrappers.
  • Common wrappers patterns (validation, caching) — Build common validation and caching wrappers: guard input, provide defaults, memoize expensive work, and expose helper flags via projected values.

async/await Basics (Level: C2)

Write clear asynchronous code with async/await and structured concurrency: start lightweight tasks, await results safely, and keep lifetimes scoped.

  • Structured concurrency, async functions — Define async functions, call them with await, and understand structured concurrency: child tasks finish before the parent scope exits.
  • async let, Task, cancellation — Run work in parallel with async let, create independent Tasks, and handle cancellation cooperatively.
  • try await and error propagation — Use try await with throwing async functions, handle failures with do/catch, and propagate errors up cleanly (including CancellationError).
  • try await and error propagation — Use try await with throwing async functions, handle failures with do/catch, and propagate errors up cleanly (including CancellationError).

Task Groups & Actors (Level: C2)

Run many child tasks safely using TaskGroup: spawn, await, and collect results with structured concurrency guarantees.

  • TaskGroup for parallelism — Use withTaskGroup to run parallel child tasks, iterate results as they arrive, and handle failures with the throwing variant.
  • Actors & data isolation, nonisolated — Learn actor isolation: state is protected behind an actor, cross-actor access requires await, and nonisolated members bypass isolation when they are pure or static.
  • Sendable and thread-safety checking — Mark data as Sendable, write @Sendable closures, and choose between value types, actors, and @unchecked Sendable for thread-safe sharing.

Concurrency Patterns (Level: C2)

Apply practical concurrency patterns in Swift: producer/consumer queues, streaming pipelines with AsyncSequence, and cooperative timeouts.

  • Producer/consumer, pipelines, timeouts — Build a simple producer/consumer, compose pipelines with AsyncSequence, and implement a timeout by racing a sleep task.
  • Bridging legacy callbacks/Combine to async/await — Wrap completion-handlers using withCheckedContinuation/withCheckedThrowingContinuation and bridge Combine publishers into AsyncSequence for simple for await loops.
  • Testing async code (XCTest) — Write async tests with XCTest: mark tests async, use await and throws, test failures and timeouts, and assert structured concurrency results.

Interop & Scripts (Level: C2)

Write quick Swift scripts with a shebang, parse CLI arguments, set exit codes, and build simple command-line tools.

  • Swift scripts (swift shebang), command-line tools — Create runnable Swift scripts with a shebang, read CommandLine.arguments, print help, and exit with proper status codes.
  • C/Obj-C interop at a glance (no iOS specifics) — Import C system modules, call simple POSIX/C APIs, and use Foundation bridges (String/NSString, arrays/dictionaries). See how Objective-C NSError** becomes Swift throws.
  • Packaging binaries with SPM — Initialize an executable package, set the product, add dependencies, and produce a release binary from .build/release ready to share.

Linting & Style (Level: C2)

Keep codebases consistent with SwiftFormat (auto-format) and SwiftLint (static rules). Learn setup, common rules, and team workflows.

  • SwiftFormat / SwiftLint basics — Set up SwiftFormat to auto-format code and SwiftLint to flag style issues. Run locally and in CI with simple, beginner-friendly rules.
  • Style guide, API design guidelines — Use clear names, thoughtful argument labels, sensible defaults, and concise doc comments to design friendly Swift APIs.
  • Documenting code (DocC intro) — Write DocC comments (/// and /** ... */), document parameters/returns, add examples, and generate static docs for SwiftPM packages.

Distribution & CI (Level: C2)

Distribute Swift projects with SwiftPM and CI: choose library vs executable packages, tag releases, and ship artifacts reliably.

  • Library vs executable packages — Understand SwiftPM library vs executable packages: how to declare products/targets, consume libraries, and run executables.
  • Semantic versioning & tagging releases — Apply Semantic Versioning (MAJOR.MINOR.PATCH), create annotated git tags, and reference versions in SwiftPM dependencies clearly.
  • CI basics with swift test and artifacts — Set up a simple CI flow: checkout → build → test → package → upload. Learn basic commands, caching tips, and how to produce release artifacts.

What You'll Learn in CoddyKit's Swift Curriculum

By completing this comprehensive Swift learning path on CoddyKit, you will gain a deep understanding of the Swift programming language, from its foundational principles to its most advanced features. You'll learn to write clean, efficient, and robust code for various platforms. Here’s a summary of the key skills and knowledge you will acquire:

  • Swift Fundamentals: Master variables, constants, data types, operators, and control flow (if/else, switch, loops).
  • Core Language Constructs: Understand functions, closures, enums, structs, and classes, including their unique value vs. reference semantics.
  • Data Handling: Become proficient with Swift's powerful collection types (Arrays, Dictionaries, Sets) and advanced String manipulation.
  • Safety & Robustness: Deep dive into Optionals for handling missing values and comprehensive Error Handling techniques.
  • Object-Oriented & Protocol-Oriented Programming: Implement inheritance, extensions, and design flexible APIs using protocols, including those with associated types and generics.
  • Memory Management: Master Automatic Reference Counting (ARC) to prevent memory leaks, using weak and unowned references effectively.
  • Advanced Swift Features: Explore powerful concepts like Generics, Property Wrappers, Result Builders (for DSLs), and Opaque/Existential types.
  • Modern Concurrency: Implement efficient asynchronous code using async/await, TaskGroups, Actors, and understand Swift's structured concurrency model.
  • Testing & Best Practices: Learn to write unit tests with XCTest, apply coding style guides (SwiftLint, SwiftFormat), and document your code using DocC.
  • Tooling & Distribution: Utilize Swift Package Manager (SPM) for dependency management, module creation, and learn about CI/CD basics for distributing your Swift projects.
  • Interoperability: Get an overview of integrating Swift with C/Objective-C code.

Who Is This Course For?

This extensive Swift curriculum on CoddyKit is perfectly suited for a wide range of learners, from complete novices to seasoned developers looking to expand their expertise:

  • Aspiring iOS Developers: If you dream of building the next big iPhone or iPad app, this is your essential starting point.
  • Beginners in Programming: Swift's friendly syntax and modern features make it an excellent first language, and our A1 courses assume no prior coding experience.
  • Web & Backend Developers: Expand your skillset to include server-side Swift with frameworks like Vapor or Kitura, leveraging Swift's performance and safety.
  • Developers Transitioning from Other Languages: If you're coming from Python, Java, C#, or JavaScript, you'll find a clear path to understanding Swift's unique paradigms and advanced features.
  • Students & Educators: A structured, in-depth resource for learning and teaching modern Swift.
  • Professionals Seeking Career Advancement: Enhance your resume with highly sought-after Swift development skills for roles in mobile, desktop, and backend engineering.

Embark on your journey to becoming a proficient Swift developer today. With CoddyKit's comprehensive, mobile-friendly mini-courses, you have everything you need to build powerful applications and shape the future of technology. Start learning Swift now and unlock your potential!

Start Learning →

How You'll Learn

🎯
Interactive Lessons
Hands-on coding exercises with real-time feedback
🤖
AI Tutor
Get instant help from our AI when you're stuck
💻
Built-in Editor
Write and run code directly in your browser
🏆
Certificate
Earn a certificate when you complete the course
Curriculum

122 Courses

Every course in the Swift Academy learning path.

01

Introduction to Swift

A11 lesson

Swift is friendly to new programmers. It's an industrial-quality programming language that's as expressive and enjoyable as a scripting lan…

  • Introduction
02

Swift Kickoff: Concepts & Setup

A13 lessonsPRO

Start Swift the right way: safety-first design, high performance via native compilation, and readable code that scales.

  • What is Swift? Safety, Performance, Readability
  • Install & Tools: Swift toolchain, REPL, swiftc, Editors
  • First Program & Build/Run (REPL vs swiftc, scripts)
03

Swift Basics: Variables, Constants & Types

A14 lessonsPRO

Master Swift's type system, constants with let, variables with var, type inference and the fundamental data types used in every Swift progr…

  • let vs var: Constants and Variables
  • Type Inference and Explicit Types
  • Numbers, Booleans and Characters
  • +1 more
04

Boolean Logic and the Ternary Operator

A14 lessonsPRO

Express clear conditional logic with Booleans, logical operators, and the ternary conditional.

  • Bool Values and Expressions
  • The Ternary Conditional Operator
  • Avoiding Nested Ternaries
  • +1 more
05

Values, Types & Optionals I

A13 lessonsPRO

Learn how Swift handles values and types: constants vs variables, inference, literals, and tuples.

  • let vs var, type inference, literals, tuples
  • Core types: numbers, Bool, String, Character
  • Optionals intro: ?, nil, if let, guard let, ??
06

Conditional Statements

A11 lessonPRO

In this lesson, we will learn about the conditional concept, which is a must for programming languages.

  • Conditions
07

Functions Basics

A13 lessonsPRO

Learn how to define and call functions in Swift with parameters, labels, defaults, and variadic arguments.

  • Defining functions, parameters, labels, default/variadic
  • Return values & multiple returns via tuples
  • In-out params & basic error handling (throws)
08

Swift Loops and Iteration Patterns

A24 lessonsPRO

Deep dive into Swift's looping constructs: for-in, while, repeat-while, and advanced iteration with ranges and stride.

  • for-in Loops with Ranges
  • while and repeat-while Loops
  • Iterating Collections with for-in
  • +1 more
09

Swift Functions Deep Dive

A24 lessonsPRO

Go beyond basic functions — learn argument labels, variadic parameters, in-out parameters and returning multiple values.

  • Argument Labels and Parameter Names
  • Default and Variadic Parameters
  • In-Out Parameters and Multiple Returns
  • +1 more
10

Swift Optional Chaining and Unwrapping

A24 lessonsPRO

Master every optional unwrapping technique: if let, guard let, nil coalescing, optional chaining and forced unwrapping.

  • if let and guard let Binding
  • Nil Coalescing and Ternary with Optionals
  • Optional Chaining ?. Operator
  • +1 more
11

Swift Operators in Depth

A24 lessonsPRO

Master every Swift operator family — arithmetic, comparison, logical, and bitwise — with overflow-safe practices.

  • Arithmetic and Compound Assignment Operators
  • Comparison and Identity Operators
  • Logical Operators and Short-Circuiting
  • +1 more
12

Numeric Types and Conversions

A24 lessonsPRO

Work confidently with Int, Double, Float, and explicit numeric conversions without losing precision.

  • Integer Types and Their Ranges
  • Floating-Point: Double vs Float
  • Explicit Numeric Conversions
  • +1 more
13

Type Casting with as, as? and as!

A24 lessonsPRO

Safely inspect and convert types at runtime using Swift's type casting operators.

  • Upcasting and Downcasting Basics
  • Conditional Casting with as?
  • Forced Casting with as! and Its Risks
  • +1 more
14

String Interpolation and Formatting

A24 lessonsPRO

Build dynamic, formatted strings using interpolation, format specifiers, and custom interpolation.

  • Basic String Interpolation
  • Formatting Numbers in Strings
  • Multiline String Literals
  • +1 more
15

Nil Coalescing and Default Values

A24 lessonsPRO

Provide safe fallbacks for optionals using the nil-coalescing operator and sensible defaults.

  • The Nil-Coalescing Operator
  • Chaining Default Values
  • Defaults in Function Parameters
  • +1 more
16

Optional Binding Patterns

A24 lessonsPRO

Unwrap optionals safely and expressively with if let, guard let, and multiple bindings.

  • if let and Shorthand Binding
  • guard let for Early Exit
  • Binding Multiple Optionals
  • +1 more
17

Swift Array Operations and Algorithms

A24 lessonsPRO

Everything about Swift arrays: creation, mutation, sorting, searching, slicing and functional operations like map, filter and reduce.

  • Creating and Mutating Arrays
  • Sorting, Searching and Slicing
  • Map, Filter and Reduce on Arrays
  • +1 more
18

Swift Dictionary and Set Mastery

A24 lessonsPRO

Learn to use Swift's Dictionary and Set types effectively: CRUD operations, iteration, set algebra and practical use cases.

  • Dictionary CRUD and Subscript Access
  • Iterating and Transforming Dictionaries
  • Set Operations: Union, Intersection, Difference
  • +1 more
19

Switch Statements and Pattern Matching

A24 lessonsPRO

Use Swift's powerful switch to match values, ranges, tuples, and bindings exhaustively.

  • Exhaustive Switch on Values
  • Matching Ranges and Tuples
  • Value Binding and where Clauses
  • +1 more
20

Ranges, Stride and Counting

A24 lessonsPRO

Generate sequences of values with ranges and stride for precise, readable iteration.

  • Closed and Half-Open Ranges
  • One-Sided Ranges
  • Counting with stride(from:to:by:)
  • +1 more
21

Type Inference vs Explicit Annotations

A24 lessonsPRO

Balance Swift's powerful type inference with explicit annotations for clarity and correctness.

  • How Type Inference Works
  • When to Add Explicit Annotations
  • Inference with Literals
  • +1 more
22

Loop Control: break, continue, labels

A24 lessonsPRO

Direct loop flow precisely with break, continue, fallthrough, and labeled statements.

  • break and continue Basics
  • Labeled Statements
  • Breaking Out of Nested Loops
  • +1 more
23

Control Flow & Patterns

A23 lessonsPRO

Master Swift control flow with if/else, switch, loops, and pattern matching.

  • if/else basics
  • switch — exhaustiveness, ranges, tuples, where
  • Loops — for-in, while, repeat-while
24

Swift guard Statement

A21 lessonPRO

In this course, we will learn about the guard, an expression we will use frequently. The use of guard statement is similar to if. Let's lea…

  • Guard
25

Parameters in Swift

A21 lessonPRO

In this course, we will learn about the useful features of parameters in Swift language.

  • Parameters
26

Swift Collections

A21 lessonPRO

In this lesson, we will learn about collection types in Swift, which is one of the most important topics.

  • Collections
27

Tuple in Swift

A21 lessonPRO

It is a type that is used to keep more than one value in a combined form. Consider a function, this function freezes the latitude and longi…

  • Tuples
28

Collections I

A23 lessonsPRO

Work with Swift collections: arrays, dictionaries, and sets. Learn creation, updates, iteration, and mutability.

  • Arrays, Dictionaries & Sets
  • Sets — membership & operations
  • Iteration patterns & mutability
29

Optionals in Swift

A21 lessonPRO

Used to express that an optional variable may not have a value. If a variable of the optional type has a value, this variable is unwrapped…

  • Optionals
30

Strings in Swift

A21 lessonPRO
  • String
31

Stored Properties

A21 lessonPRO

Property is added to define the properties of an object. In order to add a property to an object in Swift, the variable or constant definit…

  • Stored Properties
32

Range Operators

A21 lessonPRO

In this course, we will learn about the range operators provided to us by Swift.

  • Range Operators
33

Strings & Unicode

A23 lessonsPRO

Work with Unicode-correct strings: grapheme clusters, safe indices, substrings, common APIs, and copy-on-write behavior.

  • Strings & Unicode — graphemes, indices, substrings, APIs
  • Common APIs — prefix/suffix/contains, split/join
  • Performance notes — copy-on-write
34

Assertions and Preconditions

A21 lessonPRO

Assertions and preconditions are the processes of checking the application at runtime. Before running any code, it checks that certain cond…

  • Assertions and Preconditions
35

Enums in Swift

A21 lessonPRO

In this lesson, we will learn the subject of Enumeration. Enumeration is used to create user-defined types. In the next step, working with…

  • Enumeration
36

Structs & Classes I

A23 lessonsPRO

Understand Swift's primary types: structs (value semantics) and classes (reference semantics). Learn properties, observers, initializers, a…

  • Structs vs Classes, properties & inits
  • Stored vs computed properties, observers
  • Initializers & deinit (classes)
37

Characters, Unicode Scalars and Graphemes

B14 lessonsPRO

Understand how Swift models text as extended grapheme clusters for correct Unicode handling.

  • Characters and Grapheme Clusters
  • Unicode Scalars and Code Points
  • Counting and Iterating Characters
  • +1 more
38

Swift Struct Design Patterns

B14 lessonsPRO

Build robust value types with Swift structs: custom initializers, computed properties, mutating methods and copy semantics.

  • Memberwise Initializers and Custom Inits
  • Stored Properties and Property Observers
  • Computed Properties in Structs
  • +1 more
39

Swift Class Inheritance and Polymorphism

B14 lessonsPRO

Understand Swift classes: inheritance, method overriding, final, type casting with as? and the Liskov substitution principle.

  • Class Inheritance and the super Keyword
  • override, final and Preventing Subclassing
  • Type Casting: is, as?, as! and as
  • +1 more
40

Swift Enum Patterns and State Machines

B14 lessonsPRO

Use Swift enums to model domain logic: raw values, associated values, recursive enums and finite state machines.

  • Raw Values and CaseIterable
  • Associated Values for Rich Data
  • Indirect Enums and Recursive Structures
  • +1 more
41

Swift Protocol Composition and Conformance

B14 lessonsPRO

Compose behaviours with protocol composition, conditional conformance, Self requirements and protocol-oriented design.

  • Protocol Composition with &
  • Conditional Conformance
  • Self Requirements and Equatable Design
  • +1 more
42

Array Slicing and ArraySlice

B14 lessonsPRO

Work efficiently with portions of arrays using ArraySlice while understanding index semantics.

  • Creating Slices with Ranges
  • ArraySlice Index Semantics
  • Converting Slices Back to Arrays
  • +1 more
43

Mutating vs Non-mutating Methods

B14 lessonsPRO

Understand value-type mutation rules and write correct mutating methods on structs and enums.

  • Value Types and Immutability
  • The mutating Keyword
  • Mutating and self Reassignment
  • +1 more
44

The defer Statement and Scope Cleanup

B14 lessonsPRO

Guarantee cleanup code runs when a scope exits using defer for resources and rollbacks.

  • How defer Works
  • Multiple defer Blocks Ordering
  • defer for Resource Cleanup
  • +1 more
45

Value Types vs Reference Types in Depth

B14 lessonsPRO

Understand when to choose structs vs classes, copy semantics, identity operators, and designing APIs around value semantics.

  • Stack vs Heap: Where Values Live
  • Mutation, Sharing and Unexpected Aliasing
  • Mixed Value/Reference Graphs
  • +1 more
46

Result Type and Structured Error Handling

B14 lessonsPRO

Use Swift's Result type to model errors explicitly, transform results with map/flatMap, and bridge to async/await.

  • Result Fundamentals
  • map and flatMap on Result
  • Custom Error Types with LocalizedError
  • +1 more
47

SwiftUI Basics: Views, Modifiers and State

B14 lessonsPRO

Build your first SwiftUI views, understand declarative UI, use @State for local state, and apply view modifiers.

  • The View Protocol and Body Property
  • @State: Local Mutable State in Views
  • View Modifiers: Chaining and Custom Modifiers
  • +1 more
48

SwiftUI Layout: Stacks, Grids and Geometry

B14 lessonsPRO

Master SwiftUI layout with VStack, HStack, ZStack, LazyVGrid, LazyHGrid and GeometryReader for adaptive interfaces.

  • VStack, HStack and ZStack Fundamentals
  • LazyVGrid and LazyHGrid
  • Spacer, Padding and Frame Modifiers
  • +1 more
49

Codable: Encoding and Decoding JSON

B14 lessonsPRO

Serialize and deserialize Swift types to and from JSON with the Codable protocol.

  • Conforming to Codable
  • Encoding with JSONEncoder
  • Decoding with JSONDecoder
  • +1 more
50

Higher-Order Functions Mastery

B14 lessonsPRO

Transform collections expressively with map, filter, reduce, flatMap, and compactMap.

  • map and compactMap
  • filter and Predicates
  • reduce and reduce(into:)
  • +1 more
51

Closures Deep Dive

B14 lessonsPRO

Master closure capture semantics, escaping closures, autoclosures, and capture lists.

  • Capturing Values by Reference
  • Escaping Closures
  • Capture Lists and Weak Self
  • +1 more
52

Equatable, Hashable and Comparable

B14 lessonsPRO

Make your types work seamlessly in sets, dictionaries, and sorted collections.

  • Synthesized Equatable
  • Hashable and hash(into:)
  • Comparable and Sorting
  • +1 more
53

Working with Dates and Calendars

B14 lessonsPRO

Handle dates, time zones, and calendar math correctly with Date, Calendar, and DateComponents.

  • The Date Type and Time Intervals
  • Calendar and DateComponents
  • Formatting Dates
  • +1 more
54

FileManager and File I/O

B14 lessonsPRO

Read, write, and organize files and directories on disk with FileManager and URLs.

  • URLs and File Paths
  • Reading and Writing Data
  • Managing Directories
  • +1 more
55

NotificationCenter and Observer Patterns

B14 lessonsPRO

Broadcast and observe events across your app with NotificationCenter and modern alternatives.

  • Posting and Observing Notifications
  • Notification userInfo Payloads
  • Removing Observers Safely
  • +1 more
56

Swift Closures

B11 lessonPRO

Closures are self-contained blocks of code. A closure is passed as a parameter to the code, or it can be used inside codes. Let's learn how…

  • Closures
57

Lazy and Computed Properties

B11 lessonPRO

In this course, we will learn about lazy and computed properties that we will use frequently in our applications.

  • Lazy and Computed Properties
58

Access Control

B11 lessonPRO

In this course, we will learn about lazy and computed properties that we will use frequently in our applications.

  • Access Control
59

Subscripts

B11 lessonPRO

Subscripts are a shortcut to access member items of a collection, list, or directory. Use subscripts to set and retrieve values ​​according…

  • Subscripts
60

Error Handling in Swift

B11 lessonPRO

While the application is running, some errors may occur depending on the code of our application (logic errors, etc.) or depending on the e…

  • Error Handling
61

Optionals II & Error Handling

B13 lessonsPRO

Dive deeper into Optionals with chaining, guard patterns, and combine them with Swift error handling using throws, try, do/catch, and Resul…

  • Optional chaining & error handling basics
  • do/catch & defining errors (enums)
  • Result types — Result
62

Closures & Capture

B13 lessonsPRO

Learn closures in Swift: syntax, shorthand arguments, trailing closure, capture lists, and escaping vs non-escaping.

  • Closures & Capture basics
  • Capture lists — weak/unowned & value capture
  • Escaping vs non-escaping, autoclosures
63

Properties & Subscripts

B14 lessonsPRO

Enhance Swift types with advanced properties and subscripts. Learn lazy properties, get/set computed props, observers, and subscript access.

  • Properties & Subscripts
  • lazy & property observers
  • Computed properties with get/set
  • +1 more
64

Modules & SPM Basics

B13 lessonsPRO

Learn Swift Package Manager (SPM): initialize packages, modules, layout, build/test, and import dependencies.

  • Swift Package Manager basics
  • Layout, products & build/test/run
  • Importing modules & semantic versioning basics
65

Protocols & Extensions

B13 lessonsPRO

Learn Swift protocols for shared interfaces, add extensions to types, and provide default implementations. Cover static vs instance require…

  • Protocols & Extensions basics
  • Protocol extensions vs type extensions
  • Static vs instance requirements
66

Enums with Power

B13 lessonsPRO

Swift enums can hold raw or associated values. Use switch with pattern matching for powerful state modeling.

  • Enums with Power basics
  • Powerful switch with pattern matching
  • Finite state modeling
67

Structs & Classes II

B13 lessonsPRO

Dive deeper into Swift's value and reference types: learn about memberwise initializers , mutating methods , inheritance, and access contro…

  • Memberwise init & mutating methods
  • Inheritance, overriding & final
  • Access control (public/internal/fileprivate/private)
68

Linting & Style

B13 lessonsPRO

Keep codebases consistent with SwiftFormat (auto-format) and SwiftLint (static rules). Learn setup, common rules, and team workflows.

  • SwiftFormat / SwiftLint basics
  • Style guide, API design guidelines
  • Documenting code (DocC intro)
69

Functional Programming in Swift

B24 lessonsPRO

Apply functional programming techniques in Swift: pure functions, higher-order functions, function composition, and lazy evaluation.

  • Pure Functions and Side-Effect-Free Design
  • Higher-Order Functions: map, flatMap, compactMap
  • Function Composition and Pipelines
  • +1 more
70

Swift Property Wrappers

B24 lessonsPRO

Build and use property wrappers to encapsulate property storage logic: @Published, @State, custom wrappers and projected values.

  • Creating a Custom Property Wrapper
  • Projected Values with $binding
  • @Published and Observation in Combine
  • +1 more
71

SwiftUI Data Flow: Bindings and Environment

B24 lessonsPRO

Understand SwiftUI's data flow: @Binding, @ObservableObject, @EnvironmentObject and the single-source-of-truth principle.

  • @Binding: Two-Way Data Flow
  • @ObservableObject and @StateObject
  • @EnvironmentObject for Shared State
  • +1 more
72

Combine Framework Fundamentals

B24 lessonsPRO

Learn Apple's Combine reactive framework: publishers, subscribers, operators, subjects and integrating with URLSession.

  • Publishers and Subscribers
  • Operators: map, filter, combineLatest
  • PassthroughSubject and CurrentValueSubject
  • +1 more
73

Swift Structured Concurrency

B24 lessonsPRO

Master Swift's async/await, Task, TaskGroup, Actor model and structured concurrency for safe concurrent code.

  • async/await Syntax and Calling Async Functions
  • Task and Task Cancellation
  • async let and Concurrent Child Tasks
  • +1 more
74

Protocol-Oriented Programming Patterns

B24 lessonsPRO

Design flexible, composable APIs using protocols, default implementations, and protocol composition.

  • Protocols as Contracts
  • Default Implementations in Extensions
  • Protocol Composition
  • +1 more
75

Generic Constraints and where Clauses

B24 lessonsPRO

Write precise generic code by constraining type parameters with protocols and where clauses.

  • Type Parameter Constraints
  • where Clauses on Functions
  • Constraining Associated Types
  • +1 more
76

Codable: Custom Keys and Strategies

B24 lessonsPRO

Control JSON mapping with custom coding keys, encoding strategies, and manual encode/decode.

  • CodingKeys for Renaming
  • Key and Date Decoding Strategies
  • Manual encode(to:) and init(from:)
  • +1 more
77

KeyPaths and Dynamic Member Lookup

B24 lessonsPRO

Reference and compose property access with key paths and build expressive dynamic APIs.

  • KeyPath Basics
  • Using KeyPaths in Collections
  • Writable and Reference KeyPaths
  • +1 more
78

Lazy Sequences and Lazy Evaluation

B24 lessonsPRO

Defer expensive collection work and process large data efficiently with lazy sequences.

  • The lazy Property
  • Lazy map and filter
  • Lazy vs Eager Trade-offs
  • +1 more
79

CustomStringConvertible and Mirror

B24 lessonsPRO

Control how your types print and inspect them at runtime with reflection.

  • CustomStringConvertible
  • CustomDebugStringConvertible
  • Reflection with Mirror
  • +1 more
80

Swift Regex and Pattern Matching

B24 lessonsPRO

Parse and validate text with Swift's modern Regex literals, builders, and matching APIs.

  • Regex Literals and Matching
  • Capturing Groups
  • RegexBuilder DSL
  • +1 more
81

Dependency Injection in Swift

B24 lessonsPRO

Decouple components and improve testability with constructor, property, and protocol-based injection.

  • Why Dependency Injection
  • Constructor Injection
  • Protocol-Based Abstractions
  • +1 more
82

Generics I

B23 lessonsPRO

Build reusable code with generics : write functions and types that work for many data types while keeping static type safety.

  • Generic functions & types
  • Constraints (where), type inference
  • Generic algorithms on collections
83

Protocols with Associated Types

B23 lessonsPRO

Model relationships with associated types in protocols, build generic protocols, and understand how conformers pick concrete types.

  • associatedtype & generic protocols
  • Type erasure patterns (AnySequence/AnyIterator)
  • When to use existentials (any P) vs generics
84

Sequences & Algorithms

B23 lessonsPRO

Nail Swift's iterable hierarchy: Sequence → Collection → BidirectionalCollection → RandomAccessCollection , and pick the right algorithms f…

  • Sequence/Collection hierarchies
  • Map/Filter/Reduce, lazy sequences
  • Custom iterators & performance tips
85

Operators & Customization

B23 lessonsPRO

Create lightweight, readable math-like APIs with operator overloading and custom precedence groups —used sparingly and clearly.

  • Operator overloading & precedence groups
  • Subscripts & custom indices revisited
  • Hashable/Equatable/Comparable derivations
86

Testing & Diagnostics

B22 lessonsPRO

Learn XCTest basics: how to set up a test target, write test cases, and use fixtures ( setUp / tearDown ) for reliable unit tests.

  • XCTest basics (targets, fixtures)
  • Logging, assert/precondition/fatalError
87

Advanced SwiftUI: Animations and Custom Modifiers

B24 lessonsPRO

Create fluid animations with withAnimation, matchedGeometryEffect, TimelineView, and build custom AnimatableModifiers.

  • Implicit vs Explicit Animations
  • matchedGeometryEffect for Hero Transitions
  • Custom AnimatableModifier and Animatable
  • +1 more
88

UIKit Integration in SwiftUI

B24 lessonsPRO

Bridge UIKit and SwiftUI using UIViewRepresentable, UIViewControllerRepresentable, Coordinator pattern and hosting controllers.

  • UIViewRepresentable: Wrapping UIKit Views
  • Coordinator Pattern for Delegate Communication
  • UIViewControllerRepresentable
  • +1 more
89

Core Data and SwiftData

B24 lessonsPRO

Persist data with Core Data and Apple's modern SwiftData framework: modelling, CRUD, relationships, migrations and CloudKit sync.

  • Core Data Stack: NSPersistentContainer Setup
  • SwiftData @Model and ModelContext
  • Relationships and Fetch Descriptors
  • +1 more
90

Networking with URLSession and async/await

B24 lessonsPRO

Build robust networking layers in Swift: URLSession data tasks, async/await APIs, Codable decoding, error handling and retry logic.

  • URLSession data(from:) with async/await
  • Codable: Encoding and Decoding JSON
  • Error Handling and HTTP Status Codes
  • +1 more
91

Unit Testing Swift with XCTest

B24 lessonsPRO

Write effective unit tests in Swift: test organisation, XCTAssert family, mocking with protocols, async tests and measuring performance.

  • XCTestCase Setup, Teardown and Test Methods
  • XCTAssert Family and Throwing Assertions
  • Protocol-Based Mocking and Dependency Injection
  • +1 more
92

Swift Package Manager and Modularization

B24 lessonsPRO

Build multi-module Swift apps with SPM: Package.swift targets, local packages, binary targets and managing dependencies.

  • Package.swift: Targets, Products and Dependencies
  • Local Packages and Feature Modules
  • Binary Targets and XCFrameworks
  • +1 more
93

AVFoundation: Audio and Video

B24 lessonsPRO

Play, record, and process audio and video media with the AVFoundation framework.

  • Playing Media with AVPlayer
  • Recording Audio
  • AVAsset and Composition
  • +1 more
94

Core Location and MapKit

B24 lessonsPRO

Access device location and present interactive maps with Core Location and MapKit.

  • Requesting Location Authorization
  • Getting the User's Location
  • Displaying Maps in SwiftUI
  • +1 more
95

Swift on the Server with Vapor

B24 lessonsPRO

Build type-safe backend APIs in Swift using the Vapor web framework.

  • Routing and Request Handling
  • Content and JSON Encoding
  • Fluent ORM and Models
  • +1 more
96

MVVM and Coordinator Patterns

B24 lessonsPRO

Organize iOS apps with the MVVM presentation pattern and Coordinator-based navigation.

  • The MVVM Pattern
  • Binding View Models to Views
  • The Coordinator Pattern
  • +1 more
97

Localization and Internationalization

B24 lessonsPRO

Make your app world-ready with localized strings, plurals, and locale-aware formatting.

  • String Catalogs and Localized Strings
  • Pluralization and Stringsdict
  • Locale-Aware Formatting
  • +1 more
98

Push Notifications and Background Tasks

B24 lessonsPRO

Deliver timely updates with push notifications and run work in the background reliably.

  • Registering for Push Notifications
  • Handling Notification Payloads
  • Background Tasks and Refresh
  • +1 more
99

Keychain Services and App Security

B24 lessonsPRO

Store secrets securely and protect user data using Keychain and Apple's security APIs.

  • Storing Secrets in the Keychain
  • Keychain Access Control
  • Biometric Authentication
  • +1 more
100

Widgets, App Extensions and App Intents

B24 lessonsPRO

Extend your app beyond its main UI with home-screen widgets, extensions, and App Intents.

  • Building a WidgetKit Widget
  • Timeline Providers and Snapshots
  • App Extensions Overview
  • +1 more
101

Property Wrappers

B23 lessonsPRO

Create reusable behaviors with @propertyWrapper : control wrappedValue , expose extras through projectedValue ( $var ), and configure via i…

  • Creating wrappers, projectedValue
  • Reusability and constraints
  • Common wrappers patterns (validation, caching)
102

async/await Basics

B23 lessonsPRO

Write clear asynchronous code with async/await and structured concurrency : start lightweight tasks, await results safely, and keep lifetim…

  • Structured concurrency, async functions
  • async let, Task, cancellation
  • try await and error propagation
103

Interop & Scripts

B23 lessonsPRO

Write quick Swift scripts with a shebang, parse CLI arguments, set exit codes, and build simple command-line tools.

  • Swift scripts (swift shebang), command-line tools
  • C/Obj-C interop at a glance (no iOS specifics)
  • Packaging binaries with SPM
104

Distribution & CI

B23 lessonsPRO

Distribute Swift projects with SwiftPM and CI: choose library vs executable packages, tag releases, and ship artifacts reliably.

  • Library vs executable packages
  • Semantic versioning & tagging releases
  • CI basics with swift test and artifacts
105

ARC and Memory Management Patterns

C14 lessonsPRO

Deep dive into Automatic Reference Counting: retain cycles, weak/unowned, capture lists in closures and debugging leaks.

  • How ARC Counts References
  • Retain Cycles: Causes and Detection
  • weak and unowned References
  • +1 more
106

Memory Management & ARC

C13 lessonsPRO

Understand Swift ARC: how strong references keep objects alive, and how weak and unowned break cycles safely.

  • ARC basics: strong / weak / unowned
  • Retain cycles & breaking with weak/unowned
  • Value types to reduce sharing
107

Advanced Generics and Opaque Types

C14 lessonsPRO

Push generics further with conditional conformance, opaque return types (some), existentials (any) and primary associated types.

  • Generic Constraints and where Clauses
  • Opaque Types with some Keyword
  • Existentials with any and Type Erasure
  • +1 more
108

Swift Macros

C14 lessonsPRO

Understand Swift 5.9 macros: freestanding expression and declaration macros, attached macros, and writing macros with SwiftSyntax.

  • Macro Roles: Freestanding vs Attached
  • Writing a Freestanding Expression Macro
  • Attached Member Macros for Boilerplate Reduction
  • +1 more
109

Clean Architecture in Swift

C14 lessonsPRO

Implement Clean Architecture with SOLID principles in Swift: separation of layers, dependency inversion, use cases and repository pattern.

  • Layers: Domain, Data and Presentation
  • Use Case and Repository Patterns
  • Dependency Inversion with Protocol Abstractions
  • +1 more
110

Performance Profiling with Instruments

C14 lessonsPRO

Profile Swift apps with Xcode Instruments: Time Profiler, Allocations, Leaks, Main Thread Checker and optimising hot paths.

  • Instruments Basics: Time Profiler
  • Allocations and Leaks Instruments
  • Main Thread Checker and Hangs
  • +1 more
111

Sendable and Strict Concurrency

C14 lessonsPRO

Write data-race-free code for Swift 6 with Sendable, isolation, and strict concurrency checking.

  • The Data Race Problem
  • The Sendable Protocol
  • Actor Isolation and nonisolated
  • +1 more
112

SwiftUI Custom Layout Protocol

C14 lessonsPRO

Build bespoke layouts beyond stacks and grids using the SwiftUI Layout protocol.

  • The Layout Protocol Basics
  • Measuring Subviews
  • Building a Flow Layout
  • +1 more
113

SwiftUI Performance Optimization

C14 lessonsPRO

Diagnose and eliminate SwiftUI redraw bottlenecks for smooth, efficient interfaces.

  • Understanding View Identity
  • Minimizing Body Re-evaluation
  • Equatable Views and @State Scope
  • +1 more
114

Core Animation and Advanced Graphics

C14 lessonsPRO

Create rich visual effects with Core Animation layers, transforms, and custom drawing.

  • CALayer Fundamentals
  • Implicit and Explicit Animations
  • Transforms and 3D Effects
  • +1 more
115

The Composable Architecture (TCA)

C14 lessonsPRO

Structure SwiftUI apps with unidirectional data flow using The Composable Architecture.

  • State, Action, and Reducer
  • The Store and SwiftUI Integration
  • Effects and Dependencies
  • +1 more
116

Advanced Combine: Operators and Schedulers

C14 lessonsPRO

Compose complex asynchronous pipelines with advanced Combine operators and scheduling.

  • Transforming and Combining Streams
  • Schedulers and Threading
  • Error Handling Operators
  • +1 more
117

Unsafe Swift: Pointers and Memory

C14 lessonsPRO

Work directly with memory using unsafe pointers, buffers, and MemoryLayout when performance demands it.

  • MemoryLayout and Alignment
  • UnsafePointer and UnsafeMutablePointer
  • Unsafe Buffer Pointers
  • +1 more
118

Generics II: Advanced Constraints

C13 lessonsPRO

Dive deeper into generics: use conditional conformances and where clauses to make types adopt protocols only when their generic parameters…

  • Conditional conformances
  • Recursive constraints & higher-order generics
  • where clauses on extensions
119

Opaque & Existential Types

C13 lessonsPRO

Understand opaque result types ( some P ): hide concrete types behind protocols while keeping static dispatch and generics working.

  • some P (opaque result types): hiding concrete types
  • any P (existential): trade-offs & dynamic dispatch
  • Choosing between some, any, and generics
120

Result Builders & DSLs

C13 lessonsPRO

Create lightweight DSLs using @resultBuilder : compose nested structures with clean syntax while generating values behind the scenes.

  • Building mini-DSLs with result builders
  • Scoped APIs & readability patterns
  • Practical examples without UI frameworks
121

Concurrency Patterns

C13 lessonsPRO

Apply practical concurrency patterns in Swift: producer/consumer queues, streaming pipelines with AsyncSequence , and cooperative timeouts .

  • Producer/consumer, pipelines, timeouts
  • Bridging legacy callbacks/Combine to async/await
  • Testing async code (XCTest)
122

Task Groups & Actors

C23 lessonsPRO

Run many child tasks safely using TaskGroup : spawn, await, and collect results with structured concurrency guarantees.

  • TaskGroup for parallelism
  • Actors & data isolation, nonisolated
  • Sendable and thread-safety checking

Start Swift Academy Now

Join thousands of learners mastering programming with AI-powered lessons.

Get Started Free →Browse All Courses