41554 blogs · [ { "id": "01a087a1-c9c2-7085-a5ca-77f2129596a4", "title": "3 Key Strategies to Make SwiftUI Views More Reusable", "url": "https://matteomanferdini.com/swiftui-reusable-views/", "published_at": "2026-05-05T18:15:28+00:00" }, { "id": "01a087a1-c9c2-7085-a5ca-77f212de281c", "title": "The Myth of the MV pattern: Why SwiftUI developers just reinvented MVC", "url": "https://matteomanferdini.com/swiftui-mv-pattern/", "published_at": "2026-03-24T17:34:44+00:00" }, { "id": "01a087a1-c9c2-7085-a5ca-77f213a1702a", "title": "Why VIPER and MVVM in SwiftUI are actually the same pattern: A lesson in architectural thinking", "url": "https://matteomanferdini.com/mvvm-vs-viper/", "published_at": "2026-01-21T11:41:00+00:00" }, { "id": "01a087a1-c9c2-7085-a5ca-77f214378779", "title": "From broken to testable SwiftUI navigation: The decoupled approach of MVVM with coordinators", "url": "https://matteomanferdini.com/mvvm-coordinator-swiftui/", "published_at": "2025-12-16T10:53:07+00:00" }, { "id": "01a087a1-c9c2-7085-a5ca-77f2148c165b", "title": "Is SwiftData incompatible with MVVM? The standard answer disregards some key principles driving SwiftUI’s architecture", "url": "https://matteomanferdini.com/swiftdata-mvvm/", "published_at": "2025-10-20T16:19:17+00:00" }, { "id": "01a087a1-c9c2-7085-a5ca-77f2154ce85f", "title": "Why Dismissing View Models in SwiftUI is Stifling your App’s Maintainability and Testability (And the Proven Principles for a Better Architecture)", "url": "https://matteomanferdini.com/swiftui-viewmodel/", "published_at": "2025-09-02T10:15:48+00:00" }, { "id": "01a087a1-c9c2-7085-a5ca-77f215a0ebea", "title": "How to Create and Combine SwiftUI Views Without Getting Lost in Deep Nesting and Complex Layouts", "url": "https://matteomanferdini.com/swiftui-views/", "published_at": "2025-07-21T10:38:42+00:00" }, { "id": "01a0bb54-7c58-71bc-bd83-b69253db4b93", "title": "The Little-Known Root-View Technique for Improving MVVM in SwiftUI That Most Developers Overlook", "url": "https://matteomanferdini.com/mvvm-root-view/", "published_at": "2025-06-17T14:19:42+00:00" }, { "id": "01a0bb54-7c58-71bc-bd83-b692549e560f", "title": "MVVM in SwiftUI for a Better Architecture [with Example]", "url": "https://matteomanferdini.com/swiftui-mvvm/", "published_at": "2025-03-19T09:59:50+00:00" }, { "id": "01a0bb54-7c58-71bc-bd83-b69255562598", "title": "SwiftUI Data Flow: Passing Data Between Views", "url": "https://matteomanferdini.com/swiftui-data-flow/", "published_at": "2024-12-20T15:46:43+00:00" }, { "id": "01a0bb54-7c58-71bc-bd83-b69255a51c0d", "title": "Downloading files from URLs in Swift [SwiftUI Architecture]", "url": "https://matteomanferdini.com/swift-download-file-from-url/", "published_at": "2024-09-28T13:53:21+00:00" }, { "id": "01a0bb54-7c58-71bc-bd83-b69255b26574", "title": "URLSession in Swift: The Essential Guide [with Examples]", "url": "https://matteomanferdini.com/swift-urlsession/", "published_at": "2024-09-26T11:08:20+00:00" }, { "id": "01a0bb54-7c58-71bc-bd83-b69256aed525", "title": "AsyncStream and AsyncSequence for Swift Concurrency", "url": "https://matteomanferdini.com/swift-asyncstream/", "published_at": "2024-07-04T13:56:21+00:00" }, { "id": "01a0bb54-7c58-71bc-bd83-b69257128eb7", "title": "AsyncImage in SwiftUI: Loading Images from URLs [with Caching]", "url": "https://matteomanferdini.com/swiftui-asyncimage/", "published_at": "2024-05-30T13:30:03+00:00" }, { "id": "01a0bb5a-7de2-7191-82de-3e06628cbfbf", "title": "Parsing JSON in Swift: The Complete Guide [With Examples]", "url": "https://matteomanferdini.com/swift-parse-json/", "published_at": "2024-04-15T15:30:37+00:00" }, { "id": "01a0bb5a-7de2-7191-82de-3e0662b7fc91", "title": "Decoding JSON with Dynamic Types in Swift [With Codable]", "url": "https://matteomanferdini.com/swift-codable-dynamic-type/", "published_at": "2024-04-04T16:37:57+00:00" }, { "id": "01a0bb5a-7de2-7191-82de-3e0662eb3bcd", "title": "Decode JSON with Dynamic Keys in Swift [Dictionaries and Arrays]", "url": "https://matteomanferdini.com/swift-decode-json-dynamic-keys/", "published_at": "2024-04-03T13:17:52+00:00" }, { "id": "01a0bb5a-7de2-7191-82de-3e0663b0ee2d", "title": "Decoding and Flattening Nested JSON with Codable", "url": "https://matteomanferdini.com/swift-codable-nested-json/", "published_at": "2024-04-02T17:50:17+00:00" }, { "id": "01a0bb5a-7de2-7191-82de-3e0664226f33", "title": "Coding Keys in Swift with Decodable: How and When to Use Them", "url": "https://matteomanferdini.com/codingkey-swift/", "published_at": "2024-04-02T14:57:27+00:00" }, { "id": "01a0bb5a-7de2-7191-82de-3e066458d203", "title": "Parse JSON from an API URL in Swift [Codable and URLSession]", "url": "https://matteomanferdini.com/swift-parse-json-from-url/", "published_at": "2024-04-02T09:50:42+00:00" }, { "id": "01a0bb5a-7de2-7191-82de-3e06650fc891", "title": "Parse JSON in Swift without Codable [Arrays and Dictionaries]", "url": "https://matteomanferdini.com/swift-parse-json-without-codable/", "published_at": "2024-04-01T19:31:13+00:00" }, { "id": "01a0bb62-95b5-719e-a958-9d95f07596f3", "title": "Reading a JSON File in Swift [Bundle and Documents Directory]", "url": "https://matteomanferdini.com/swift-read-json-file/", "published_at": "2024-04-01T09:49:59+00:00" }, { "id": "01a0bb62-95b5-719e-a958-9d95f171dd44", "title": "Swift Data to JSON String: Formatting and Pretty Printing", "url": "https://matteomanferdini.com/swift-data-to-json/", "published_at": "2024-03-30T15:21:16+00:00" }, { "id": "01a0bb62-95b5-719e-a958-9d95f26bc8d3", "title": "Date decoding strategies in Swift [with Examples]", "url": "https://matteomanferdini.com/datedecodingstrategy/", "published_at": "2024-03-28T10:41:24+00:00" }, { "id": "01a0bb62-95b5-719e-a958-9d95f31f0225", "title": "Async Await in Swift: Concurrency Explained [With Examples]", "url": "https://matteomanferdini.com/swift-async-await/", "published_at": "2023-12-08T15:34:40+00:00" }, { "id": "01a0bb62-95b5-719e-a958-9d95f32922f3", "title": "How to Become an iOS Developer [2023 Salary and Skills]", "url": "https://matteomanferdini.com/how-to-become-an-ios-developer/", "published_at": "2023-10-31T16:20:13+00:00" }, { "id": "01a0bb62-95b5-719e-a958-9d95f3562605", "title": "REST API Calls in Swift: iOS Networking Architecture [in SwiftUI]", "url": "https://matteomanferdini.com/swift-rest-api/", "published_at": "2023-09-22T14:50:29+00:00" }, { "id": "01a0bb62-95b5-719e-a958-9d95f426e37e", "title": "Switch Statements in Swift: Selecting Among Multiple Options", "url": "https://matteomanferdini.com/swift-switch/", "published_at": "2023-07-03T13:40:56+00:00" }, { "id": "01a0bb68-b467-730d-8295-f28f38f7f0aa", "title": "Learn Swift Programming: The essential step to creating iOS apps", "url": "https://matteomanferdini.com/learn-swift/", "published_at": "2023-06-26T15:26:31+00:00" }, { "id": "01a0bb68-b467-730d-8295-f28f39ed7ffe", "title": "Organizing Data by Key in Swift Dictionaries", "url": "https://matteomanferdini.com/swift-dictionary/", "published_at": "2023-06-22T10:07:21+00:00" }, { "id": "01a0bb68-b467-730d-8295-f28f3ab06c85", "title": "Using Guards in Swift to Avoid the Pyramid of Doom", "url": "https://matteomanferdini.com/swift-guard/", "published_at": "2023-01-04T11:18:26+00:00" }, { "id": "01a0bb68-b467-730d-8295-f28f3b9057bd", "title": "A Comprehensive Guide to URLs in Swift and SwiftUI", "url": "https://matteomanferdini.com/swift-url-components/", "published_at": "2022-12-08T11:49:17+00:00" }, { "id": "01a0bb68-b467-730d-8295-f28f3bb5d3b9", "title": "Swift Arrays: The Most Used Collection to Organize Data", "url": "https://matteomanferdini.com/swift-array-2/", "published_at": "2022-10-28T10:50:38+00:00" }, { "id": "01a0bb68-b467-730d-8295-f28f3c4b6ea3", "title": "The Best and Fastest Ways to Install Xcode on your Mac", "url": "https://matteomanferdini.com/install-xcode/", "published_at": "2022-08-04T14:22:30+00:00" }, { "id": "01a0bb68-b467-730d-8295-f28f3c78dd46", "title": "Write Shorter Conditions with the Swift Ternary Operator", "url": "https://matteomanferdini.com/swift-ternary-operator/", "published_at": "2022-08-04T08:33:49+00:00" }, { "id": "01a0bb6c-ebae-7088-bce0-b066c3b7394a", "title": "Take Decisions in Swift with If Statements and Boolean Operators", "url": "https://matteomanferdini.com/swift-if/", "published_at": "2022-06-07T09:37:05+00:00" }, { "id": "01a0bb6c-ebae-7088-bce0-b066c4647255", "title": "Hello, World! Your First Swift Program", "url": "https://matteomanferdini.com/swift-hello-world/", "published_at": "2022-06-02T10:15:15+00:00" }, { "id": "01a0bb6c-ebae-7088-bce0-b066c4c47703", "title": "Powerful Advanced Swift Techniques for Complex Apps", "url": "https://matteomanferdini.com/advanced-swift/", "published_at": "2021-09-21T09:18:53+00:00" }, { "id": "01a0bb6c-ebae-7088-bce0-b066c5685fc4", "title": "The Essential Guide to Unit Testing in iOS", "url": "https://matteomanferdini.com/ios-unit-testing/", "published_at": "2020-08-11T09:24:13+00:00" }, { "id": "01a0bb6c-ebae-7088-bce0-b066c5a3fc8c", "title": "Master Swift Generics: A practical guide to code reuse", "url": "https://matteomanferdini.com/swift-generics/", "published_at": "2020-07-01T09:48:11+00:00" }, { "id": "01a0bb6c-ebae-7088-bce0-b066c67d544d", "title": "A Practical SwiftUI Kickstart", "url": "https://matteomanferdini.com/swiftui/", "published_at": "2020-05-30T09:58:29+00:00" }, { "id": "01a0bb6c-ebae-7088-bce0-b066c6a559fb", "title": "Weak Self in Swift Made Easy: What it is and why it’s needed", "url": "https://matteomanferdini.com/swift-weak-self/", "published_at": "2020-03-02T14:47:10+00:00" }, { "id": "01a0bb70-c1f6-7033-af73-307cd9058197", "title": "Computed properties in Swift: A basic feature for safer and cleaner code", "url": "https://matteomanferdini.com/computed-property-swift/", "published_at": "2020-02-24T16:21:17+00:00" }, { "id": "01a0bb70-c1f6-7033-af73-307cd97f0c7b", "title": "Model-View-Controller in iOS: A Blueprint for Better Apps", "url": "https://matteomanferdini.com/model-view-controller-ios/", "published_at": "2020-01-28T11:27:56+00:00" }, { "id": "01a0bb70-c1f6-7033-af73-307cda73ab95", "title": "Protocol-Oriented Programming: The Best Tool of Expert iOS Developers", "url": "https://matteomanferdini.com/protocol-oriented-programming/", "published_at": "2019-09-04T09:46:50+00:00" }, { "id": "01a0bb70-c1f6-7033-af73-307cdb668ad7", "title": "For loops in Swift: a Detailed List of the Most Practical Uses", "url": "https://matteomanferdini.com/swift-for-loop/", "published_at": "2019-06-22T09:56:29+00:00" }, { "id": "01a0bb70-c1f6-7033-af73-307cdc1a1409", "title": "UITableview: The Essential Solution for Scrolling iOS Interfaces", "url": "https://matteomanferdini.com/uitableview/", "published_at": "2019-06-10T15:57:24+00:00" }, { "id": "01a0bb70-c1f6-7033-af73-307cdcb51b24", "title": "Functional Programming in Swift: an Unusual yet Powerful Paradigm", "url": "https://matteomanferdini.com/swift-functional-programming/", "published_at": "2019-04-30T10:19:11+00:00" }, { "id": "01a0bb70-c1f6-7033-af73-307cdd874c3c", "title": "Unwind Segues Step-by-Step (and 4 Reasons to Use Them)", "url": "https://matteomanferdini.com/unwind-segue/", "published_at": "2019-02-26T12:16:17+00:00" }, { "id": "01a0bb74-411d-70e8-a603-2b94ae13a069", "title": "Passing Data Between View Controllers in iOS: The Definitive Guide", "url": "https://matteomanferdini.com/how-ios-view-controllers-communicate-with-each-other/", "published_at": "2019-02-13T12:34:24+00:00" }, { "id": "01a0bb74-411d-70e8-a603-2b94ae218969", "title": "Swift Singletons: A Design Pattern to Avoid (With Examples)", "url": "https://matteomanferdini.com/swift-singleton/", "published_at": "2019-01-23T15:47:41+00:00" }, { "id": "01a0bb74-411d-70e8-a603-2b94aeaba008", "title": "Auto Layout in iOS: A Comprehensive 7 Steps Roadmap", "url": "https://matteomanferdini.com/ios-auto-layout/", "published_at": "2018-12-11T12:52:17+00:00" }, { "id": "01a0bb74-411d-70e8-a603-2b94afa04b47", "title": "Advanced iOS Architecture: Solving the 5 Issues of the MVC, MVVM and VIPER patterns", "url": "https://matteomanferdini.com/ios-architecture-lotus-mvc-pattern/", "published_at": "2018-07-04T10:13:42+00:00" }, { "id": "01a0bb74-411d-70e8-a603-2b94b0873f7a", "title": "iOS Storyboards in Xcode: The Ultimate Guide", "url": "https://matteomanferdini.com/ios-storyboards-xcode/", "published_at": "2018-01-07T16:34:46+00:00" }, { "id": "01a0bb74-411d-70e8-a603-2b94b0d238d5", "title": "Books That Will Improve Your Career, Freelancing and Business making Swift Apps for iOS", "url": "https://matteomanferdini.com/books-that-will-improve-your-ios-development-career-freelancing-and-business/", "published_at": "2016-12-05T13:22:42+00:00" }, { "id": "01a0bb74-411d-70e8-a603-2b94b1839b68", "title": "How to Persist Data in iOS Apps Using Property Lists and the Correct Architecture for Handling Persistent Storage", "url": "https://matteomanferdini.com/how-to-persist-data-in-ios-apps-using-property-lists-and-the-correct-architecture-for-handling-persistent-storage/", "published_at": "2016-10-29T11:54:20+00:00" } ] posts Claim your blog
Back to DeusExMachina
Blog · corpus.blog/blogs/matteomanferdini.com/posts

DeusExMachina

matteomanferdini.com

2026

2025

2024

2023

2022

2021

2020

2019

2018

2016