Sobes.tech
Junior — Middle

Come implementi il pattern architetturale MVVM nello sviluppo con UIKit?

sobes.tech AI

Risposta dell'AI

Il pattern architetturale MVVM (Model-View-ViewModel) in UIKit viene implementato attraverso la separazione delle responsabilità tra tre componenti:

  • Model — dati e logica di business.
  • View — elementi visivi dell’interfaccia (UIView, UIViewController).
  • ViewModel — intermediario che trasforma i dati del modello in un formato adatto alla visualizzazione nella View.

L’implementazione di MVVM in UIKit generalmente include:

  1. Creare un ViewModel che contiene proprietà e metodi per preparare i dati.
  2. Il ViewController si iscrive alle modifiche nel ViewModel (tramite KVO, Combine, RxSwift o delegati) e aggiorna l’UI.
  3. Il ViewModel non contiene riferimenti alla View, il che aumenta la testabilità.

Esempio di un ViewModel semplificato:

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
    }
}

Nel ViewController, ci si iscrive a onNameChanged e si aggiorna l’UI quando i dati cambiano.