Junior — Middle
How do you implement the MVVM architectural pattern when developing with UIKit?
sobes.tech AI
Answer from AI
The architectural pattern MVVM (Model-View-ViewModel) in UIKit is implemented by dividing responsibilities among three components:
- Model — data and business logic.
- View — visual interface elements (UIView, UIViewController).
- ViewModel — an intermediary that transforms data from the model into a format suitable for display in the View.
Implementing MVVM in UIKit typically involves:
- Creating a ViewModel that contains properties and methods for preparing data.
- The ViewController subscribes to changes in the ViewModel (via KVO, Combine, RxSwift, or delegates) and updates the UI.
- The ViewModel does not hold references to the View, which enhances testability.
An example of a simplified ViewModel:
class UserViewModel {
var name: String
var onNameChanged: (() -> Void)?
private var user: User {
didSet {
name = user.name.uppercased()
onNameChanged?()
}
}
init(user: User) {
self.user = user
self.name = user.name.uppercased()
}
func updateName(_ newName: String) {
user.name = newName
}
}
In the ViewController, subscribe to onNameChanged and update the UI when data changes.