MV Design Pattern in iOS - Build SwiftUI Apps Apple's Way (Udemy.com)
Harness the power of SwiftUI framework and start building amazing apps!
Created by: Mohammad Azam
Last updated April 2024
What you will learn
- Writing SwiftUI apps using MV pattern
- Learn to build SwiftUI apps based on Apple's recommendations
- Learn how MVVM might be adding unnecessary code to your SwiftUI apps
- Learn to write end-to-end tests for your application
- Apply MV pattern for client/server applications
- Learn to build Core Data apps and @FetchRequest and @Environment property wrappers
How it compares
Against the other 160 rated Udemy courses in iOS Swift on CourseDuck:
- Rating4.5 out of 5higher than 45% of them
- Reviews264#86 of 161 by number of reviews
- Length6.9 hoursshorter than 69% of them
- Last updatedApril 2024more recently than 82% of them
Course Description
MVVM is the default pattern when building SwiftUI applications. I have been personally using the MVVM pattern since the inception of SwiftUI in 2019.
After building hundreds of demos and prototypes, I started to notice issues with using MVVM patterns for SwiftUI applications. These issues resulted in adding needless complexity and constantly fighting the SwiftUI framework.
In this course, I will explain a different pattern for building SwiftUI apps. This pattern is used by Apple to build their SwiftUI applications. The pattern is called the MV pattern, where M stands for Model and V is for View.
Let’s check out the contents of the course:
Understanding MV Pattern
In this section you will learn the thinking behind the MV pattern and how it is different from the MVVM pattern. We will compare SwiftUI with WPF and conclude that in SwiftUI, the View is also the View Model.
Validation
In this section, you will learn how to perform validation using MV pattern. These validation techniques are inspired from the React framework. You will learn how to perform simple validation, inline validation and even validation summary.
Coffee Order - [Project Time]
In this section, you will be building a complete Coffee Ordering application integrated with a JSON API. You will learn how to create an aggregate root model and webservice layer, which allows the app to consume and present data. You will also learn how to write end-to-end tests for your application.
Budget App - [Project Time]
In this section, you will learn how to build a SwiftUI app using MV pattern, which uses Core Data to persist information on the device. You will learn to use property wrappers including @FetchRequest and @Environment, which makes working with Core Data a breeze.
Who is this course for?
Developers who wants to learn Apple’s way of building SwiftUI applications
Developers who wants to stop fighting the SwiftUI framework and start building iOS apps
Developers who wants to start using all the power and flexibility provided by the SwiftUI framework
Developers who wants to write less code to achieve more
This course will serve as an eye opener to many developers and will provide a lot of information on a different and easier way for building SwiftUI applications.
After this course, you will be ready to start building your apps using the MV pattern.
Let’s get started.
Instructor Details
- 4.5 Rating
264 Reviews
Mohammad Azam
Mohammad Azam is a seasoned iOS developer, educator, and speaker with over a decade of experience building mobile applications and mentoring developers. He is the founder of AzamSharp School, a learning platform offering 150+ hours of iOS development content and live workshops that have helped thousands of students level up their skills. As an instructor at DigitalCrafts and a top-rated Udemy and LinkedIn Learning teacher, Azam has taught more than 80,000 students worldwide. He frequently speaks at developer conferences, sharing insights on SwiftUI, app architecture, and machine learning in iOS. His teaching is known for being practical, clear, and deeply rooted in real-world development.
More courses by Mohammad Azam
SwiftUI - Declarative Interfaces for any Apple Device (2023)
4.5 (2,337 Reviews)
Provider: Udemy
Time: 26.5h
$13.99
Async/Await and Actors - Concurrency in Swift (2023)
4.6 (1,449 Reviews)
Provider: Udemy
Time: 5h
$69.99
More iOS Swift courses
iOS 12 Swift 4.2 - The Complete iOS App Development Bootcamp (2021)
4.9 (562 Reviews)
Provider: Udemy
Time: 55.4h
$109.99
Noob to App Store - iPhone Apps with Swift, SwiftUI & iOS 15 (2021)
4.9 (342 Reviews)
Provider: Udemy
Time: 7.8h
$69.99
Deep Dive iOS 27 & SwiftUI 6: 90-Hour Project-Based Course (2026)
4.8 (983 Reviews)
Provider: Udemy
Time: 88.7h
$79.99
The Swift Arcade Data Structures and Algorithms Bootcamp (2022)
4.8 (839 Reviews)
Provider: Udemy
Time: 7.2h
$84.99
How To Make An App For Beginners (iOS/Swift - 2019)
4.8 (658 Reviews)
Provider: Udemy
Time: 4.3h
Free
SwiftUI iOS13 Coffee Shop Application, Order Products Online (2020)
4.8 (158 Reviews)
Provider: Udemy
Time: 8.2h
$109.99
Reviews
By D.P. Coder on 5/16/2025
I really enjoyed the course — it gave me a lot of new insights, especially in terms of architecture and design approaches. I’m still learning how to build apps. I’ve created a simple training app and am now working on a more complex one. In both projects, I initially tried to follow the MVVM pattern, since it’s mentioned in almost every tutorial on YouTube. My usual process is to write all the logic in the View first, and then gradually move it into a ViewModel. Over time, I started running into limitations: property wrappers don’t work in ViewModels, and I often had to write a lot of boilerplate code or use workarounds that didn’t feel elegant. This led me to explore other architectural patterns, and that’s how I discovered the MV approach, which felt much more logical and flexible for my use case. The only thing I still find challenging is testing. UI tests aren’t always predictable, which was also apparent in the testing lessons from this course. I can definitely recommend this course to beginners, as well as to those who don’t want to overengineer simple features just because they chose MVVM.
By Christopher Selin on 7/24/2023
As mentioned by others there is a backend piece that isn't covered by the lecture. I was able to get by using the instructor's existing endpoints, but that obviously isn't scalable. Otherwise, it was a solid course where each section added value.
By Andrew Warwick on 7/5/2023
Good content, but there are a fair few occasions where the same thing is said far too many times. It’s video, so if something is unclear we can rewind and watch again. For instance, lecture 23, the instructor explains you can use two different URLs—one for test, and one for dev—about a dozen times. Saying the same thing again and again. Not the only time he does this. It’s great content, don’t get me wrong, but get the impression that the course could be half the length if the script was written, edited, and then filmed. This feels like a 'live' commentary where a single point is made again and again, like in a classroom, rather than a video course where you can rewind and rewatch. Feels like a script editor is required to trim down the content.
By Bob Kalus on 5/8/2023
Started off fantastic, really liked the explanation of Bindings and the underpinnings of how to decide what objects a view needs, which is mostly addressed when discussing MV vs. MVVM model. Those videos are fantastic and worth the cost of the class. Sections 3-5 are disappointing, at least for me, because you can only code along if you already have a server in place with JSON data that can be read and written, and I don't, and suspect that most people also won't, so most of this I listened to at 2x speed and still didn't find very helpful. The testing is a reasonably good walk through UI testing, and I saw in the reviews that the instructor answered questions about UI testing by saying it's more complete than unit testing. I think for a simple app that is true, but in a complex app, learning how to unit test is very valuable, and the thing I REALLY was looking forward to is learning how to write Unit Tests that would allow me to test and debug my data store, which is CloudKit. UI testing has not been sufficient for me to figure out how to fix my CloudKit data store, since it fails without much information. So overall thus far, the instructor is clearly knowledgeable and engaging, and the project is well thought out and paced well. But I think its utility is limited given its connection to an existing and functioning JSON data store which is not replicable from the course materials, and the fact that UI testing is not likely going to help others (like me) whose particular reason for choosing the course was to learn how to unit test the underpinnings of a project and using the tests to help build a robust data store. If it did that with CloudKit, it would deserve 5 stars without hesitation.
By Filemon Salas on 4/13/2023
I really like the teaching style of the instructor. I really like VM, less complicated than MVVM. The only thing I didn't like about this course was the inconsistency of the Resource files. For instance, in lecture 9, the Resource files you get don't match the project the instructor used, not even the name of the project; it has different folders, extra files, etc.
By Cliff Sharp on 3/21/2023
This is a good match for what I am needing at this time.
By Tim Newton on 11/9/2022
Very good class, but it would be helpful to have the node javascript files so we can set up our own Glitch site (or other site) when following along.
By Richard Wise on 11/2/2022
Instructor is clear and concise, provides justification for code used and alternatives where it makes sense.
By Moris B. on 10/18/2022
Great course! I just wished that the issues of using Core Data from background processes were also addressed, adding calls to background services to the BudgetApp for example. It would have been great if CloudKit was also addressed for syncing between devices.
By Michalis Karagiorgos on 10/4/2022
Very nice but I prefer unit testing instead of ui testing. Is there a way to write unit tests for a SwiftUI view function? Why you prefer ui testing.
Quality Score
No CourseDuck member has rated this course yet. Taken it? Give each part a thumbs up or down.
Overall Score : 90 / 100












