Blog

30 posts about iOS, macOS, and Swift

2026
Building a Pokédex on iOS — Part 10: CI/CD with GitHub Actions Building a Pokédex on iOS — Part 9: Unit testing with Swift Testing Building a Pokédex on iOS — Part 8: ViewModel with @Observable Building a Pokédex on iOS — Part 7: Image cache Building a Pokédex on iOS — Part 6: Offline persistence with SwiftData Building a Pokédex on iOS — Part 5: Domain models and Use Cases Building a Pokédex on iOS — Part 4: Repository Pattern Building a Pokédex on iOS — Part 3: DTOs and the API contract Building a Pokédex on iOS — Part 2: Network layer Building a Pokédex on iOS — Part 1: Project structure Conditional compilation in Swift Generics in Swift @propertyWrapper in Swift: beyond UserDefaults Feature flags with UserDefaults on macOS Narcisse is now live AlgoViewer is now available FigureDex: Your Amiibo Collection, Finally Organized Basic operators struct — value type if / else if / else Basic function declaration What is an Optional? What is a Swift Playground? What are variables and constants?