Sobes.tech
Junior — Middle

Cum implementați pattern-ul arhitectural MVVM în timpul dezvoltării cu UIKit?

sobes.tech AI

Răspuns de la AI

Model-View-ViewModel (MVVM) în UIKit este implementat prin separarea responsabilităților între trei componente:

  • Model — datele și logica de business.
  • View — elementele vizuale ale interfeței (UIView, UIViewController).
  • ViewModel — intermediarul care transformă datele din model într-un format potrivit pentru afișare în View.

Implementarea MVVM în UIKit include de obicei:

  1. Crearea unui ViewModel care conține proprietăți și metode pentru pregătirea datelor.
  2. ViewController se abonează la schimbările din ViewModel (prin KVO, Combine, RxSwift sau delegați) și actualizează UI-ul.
  3. ViewModel nu conține referințe către View, ceea ce crește testabilitatea.

Exemplu de ViewModel simplificat:

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

În ViewController, te abonezi la onNameChanged și actualizezi UI-ul când datele se schimbă.