Swift
May 2, 2023 · View on GitHub
The list mostly constains Swift-related sections with a small exception related to Foundation framework. The Foundation-related articles will be moved into separete list.
What is new
The section contains materials that are dedicated to specific versions of Swift
Swift 5.8
Swift 5.7
Swift 5.6
Swift 5.5
Swift 5.4
GitHub
Swift 5.3
Swift 5.2
- New Diagnostic Architecture Overview
- Using KeyPaths as functions in Swift 5.2
- Adding default values to subscript arguments in Swift 5.2
- How and when to use callAsFunction in Swift 5.2
Swift 5.1
- What’s new in Swift 5.1
- How to use opaque return types in Swift 5.1
- Ordered Collection Diffing
- The Swift 5.1 features that power SwiftUI’s API
- Swift Opaque Result Types
- Shifting paradigms in Swift
- Swift Property Wrappers
- Swift 5.1 Two Quick Tips
- What is Module Stability in Swift and why should you care?
Swift 5.0
- What will be new in Swift 5?
- What’s new in Swift 5.0
- The Beauty of Swift 5 String Interpolation
- More fun with Swift 5 String Interpolation: Radix formatting
- Swift 5 Interpolation Part 3: Dates and Number Formatters
- Swift 5.0 is changing optional try
- Swift 5 gives us Nice Things™: Custom string delimiters
- How to use raw strings in Swift 5
- How to use Result in Swift 5
- How to use @dynamicCallable in Swift
- Add Result to the Standard Library - SE0235
- Contiguous Collection Protocols - SE0237
- Customizing string interpolation - SE0238
- Add Codable conformance to Range types - SE-0239
- Swift 5 Release Notes for Xcode 10.2 beta
- How to use the result type to handle errors in Swift 5?
- Character Properties in Swift 5
- Swift 5 Exclusivity Enforcement
- Expressible By String Interpolation
- ABI Stability and More
- Super-powered string interpolation in Swift 5.0
- Swift 5.0: How to migrate your project and frameworks
Swift 4.2
Swift 4.0
Actors
Structured Concurrency / async/await
- Introduction to structured concurrency in Swift: continuations, tasks, and cancellation
- Swift async/await, Structured concurrency, @asyncHandler
- 0304-structured-concurrency
- 0296-async-await
- Getting started with async/await in Swift
- Async and Await in Swift 5.5
- Async/Await in Swift – Rethinking Callbacks and Escaping the Pyramid of Doom
- Using async/await in SwiftUI
- What are generators and why Swift needs them?
- Event loops, building smooth UIs, and handling high server load
- Coroutines and “yield” expressions in Swift
- Introduction to structured concurrency in Swift: continuations, tasks, and cancellation
Videos
- Swift Concurrency Essentials: Getting Started
- How do Actors work in Swift?
- Understanding Actors in Swift
- Getting Started with Swift Concurrency (Async Await, Actors, Continuations, Tasks)
- Swift Concurrency Manifesto | Chris Lattner and Lex Fridman
- How to download images in parallel with Swift Concurrency
Initialization
Enumeration Type
- Enumerations
- Enumerations
- Unknown Enum Cases
- SERIALISATION OF ENUM WITH ASSOCIATED TYPE
- @unknown default usage with enums in Swift
- Swift 5 Frozen enums
- Make the most of enumerations in Swift
- Inclusive enums with OptionSet
- Swift: Using Enums to Write Safer Code
- Swift: Using Enums to Write Safer Code — Part Two
- Advanced Enum (Enumerations) by Example - Swift Programming Language
Indirect Keyword
- Indirect Enums - Swift 3.0
- Indirect Enums And Structs
- What are indirect enums?
- Indirect Enums on practice
Q&A
- indirect enums and structs
- Using
indirectmodifier forstructproperties - Who benefits from the
indirectkeyword?
Formatters
- Exploring some of the lesser-known, built-in Formatter types
- Formatter
- Formatting numbers in Swift
- Nicely Formatted Lists with ListFormatter
Result Builder (Function Builder) (Swift 5.1)
Articles
- Digging deeper into the Swift behind SwiftUI
- UIAlertController with Function Builders
- Understanding Function Builders
- Crash course in Swift's 'function builders' with SwiftUI
- A deep dive into Swift’s result builders
- Annotating properties with result builder attributes
Videos
Access Control / Accessors
Typealias
Directives
String
- Strings In Swift 4
- Dive deep into Swift String
- String literals in Swift
- Empty Strings in Swift
- How Strings and Substrings work in Swift
- Different ways to check if a string contains another string in Swift
Regular Expressions
- How to use regular expressions in Swift
- Regular Expressions in Swift
- NSRegularExpression
- Regular Expressions in Swift
- Regular Expressions in Swift
- Regular Expressions Tutorial: Getting Started
- An Introduction to Regular Expressions
Standard Data Structures
Value Semantics
Data Types
Structs
- Stop Using Structs!
- When to Use Swift Structs and Classes
- Bidirectional associations using value types in Swift
Protocols
- Synthesized conditional conformances in Swift 4.2
- Private properties in protocols
- Mixins over Inheritance
- Injecting forEach into chained method calls
- Mastering Generics with Protocols: The Specification Pattern
- Multiple Inheritance in Swift
- How to split decision and action logic with the Swift type system
- The subtleties of protocol extensions
- Using protocols as composable extensions
- Refactoring With Protocols
- Exploring Existential Types With Swift
- Alternatives to protocols in Swift
Associated Types
Videos
Standart Protocols
KVC
- Struct References
- Making the Most of Swift.KeyPath
- Swift 4 KeyPaths and You
- The power of key paths in Swift
Documentation
Error Handling
Encoding and Decoding (Codable)
- Encoding and Decoding in Swift 4
- Encoding and Decoding
- JSON Parsing with Swift 4
- Encoding, Decoding and Serialization in Swift 4
- Single Value Codable
- Using Swift Codable With Property Lists
- Codable cheat sheet
- OBJECT SERIALIZATION IN IOS
- Encoding and Decoding in Swift
- Encoding and Decoding Enums with Associated Values Using Codable (Swift 4)
- Swift Tip: Codable Enums
- Indeterminate Types with Codable in Swift
- Encode/Decode Array of Types conforming to protocol with JSONEncoder
- Dynamic Encodable with type erasure
- Are KeyPaths Codable?
- GOING DEEP WITH DECODABLE
Code
Documentation
Ranges & Intervals
Type Erasure
- Type erasure using closures in Swift
- Swift World: Type Erasure
- Swift: Accomplishing Dynamic Dispatch on PATs (Protocol with Associated Types)
- Type Erasure in Swift
- Breaking Down Type Erasure in Swift
- A “Type Erasure” Pattern that Works in Swift
- Swift: Attempting to Understand Type Erasure
- How To Use Type Erasure For Better Model Abstractions
Properties
- Lazy Initialization with Swift
- Using lazy properties in Swift
- Swift Lazy Initialization with Closures
- Stored Properties In Swift Extensions
- Property observers in Swift
- Computed properties in Swift
- Computed properties in Swift: A basic feature for safer and cleaner code
- Lazy Properties in Structs
Property Wrappers
- Property wrappers to remove boilerplate code in Swift
- Property wrappers in Swift 5.1: the missing @Published implementation
- Making properties overridable only in debug builds
KVO and Bindings
- Bindings and KVO alternatives
- Bindings, Generics Swift and MVVM
- Solving The Binding Problem With Swift
- KVO In iOS 11
- Swift Tip: Bindings with KVO and Key Pathss
- Observing properties with Key-Value Observering
Switch
Optionals
- The Strange Case Of Mapping Over Optionals
- Filtering Object To Optionals
- Optionals in Swift explained: 5 things you should know
- All About Swift Optional
Collections
- Creating custom collections in Swift
- Let's Build Swift.Array
- Array vs Set: Fundamentals in Swift explained
Required
Import
Floating Point
Where
Loops (for, while, repeat)
Closures
Weak, Strong and Unowned References
- Weak self and unowned self explained in Swift
- Discover Side Tables - Weak Reference Management Concept in Swift
Capture List
Nonmutating
Attributes
@dynamicMemberLookup
- Exploring @dynamicMemberLookup
- Thoughts on @dynamicMemberLookup
- How to use Dynamic Member Lookup in Swift
- Dynamic Member Lookup combined with key paths in Swift
@inline
Pattern Matching
- Pattern Matching, Part 1: switch, enums & where clauses
- Pattern Matching, Part 2: tuples, ranges & types
- Pattern Matching, Part 3: Custom pattern matching & syntactic sugar
- Pattern Matching, Part 4: if case, guard case, for case
- Pattern Matching in Swift
- Custom pattern matching in Swift
- Writing Custom Pattern Matching in Swift
- Pattern Matching with case let
- Pattern matching in Swift
- Defining custom patterns in Swift
Assertion
Option Set
- How to create a custom OptionSet
- OptionSetType and enums
- Option Sets in Swift
- OptionSet usage in Swift like NS_OPTIONS
- Option Set
Hashable
Optimizations
Copy-On-Write
KeyPath
- Swift 4 KeyPaths and You
- The power of key paths in Swift
- Using KeyPaths as functions in Swift 5.2
- The power of key paths in Swift
- Keypaths in Swift Explained
- Understanding KeyPaths in Swift
Subscripts
Defer
Timer
Date
Objective-C Runtime
Associated Object
Generics
Method Swizzling
ARC
- Understand ARC
- ARC and Memory Management in Swift
- Advanced iOS Memory Management with Swift: ARC, Strong, Weak and Unowned Explained
Any & AnyObject
Result Type
Dynamic Swift
Keywords: Reflection, Introspection, Mirror, CustomReflectable
Code Optimization / Performance
- Unbreakable reference cycles in Swift no one is talking about
- Increasing Performance by Reducing Dynamic Dispatch
- Why using isEmpty is faster than checking count == 0
Videos
Namespacing
Other
- Swift + Keywords (V 3.0.1)
- Solving the binding problem with Swift
- Swift Get Class Name
- When to Use Swift Structs and Classes
- Debouncing in Swift while your iOS app is in the background
- Inline types and functions in Swift
- Chris Lattner on the origins of Swift
- Exploring the Swift standard library source code
- What makes code “Swifty”?