Sobes.tech
Junior — Middle

Kaip įgyvendinate architektūros modelį MVVM dirbdami su UIKit?

sobes.tech AI

Atsakymas iš AI

UIKit'e MVVM (Model-View-ViewModel) architektūros šablonas įgyvendinamas per atsakomybės pasidalijimą tarp trijų komponentų:

  • Modelis — duomenys ir verslo logika.
  • Vaizdas — vizualūs sąsajos elementai (UIView, UIViewController).
  • ViewModel — tarpininkas, kuris paverčia modelio duomenis į formatą, tinkamą vaizdui rodyti.

UIKit'e MVVM įgyvendinimas paprastai apima:

  1. Sukurti ViewModel, kuris turi savybes ir metodus duomenų paruošimui.
  2. ViewController prenumeruoja pokyčius ViewModel (naudodamas KVO, Combine, RxSwift ar delegatus) ir atnaujina UI.
  3. ViewModel neturi nuorodų į View, kas padidina testuojamumą.

Supaprastintas ViewModel pavyzdys:

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

ViewController'yje prenumeruojate onNameChanged ir atnaujinate UI, kai duomenys keičiasi.