Sobes.tech
Junior — Middle

Kuidas te realiseerite MVVM arhitektuurimustri UIKitiga töötades?

sobes.tech AI

Vastus AI-lt

UIKit-s arhitektuurimuster MVVM (Model-View-ViewModel) realiseeritakse vastutuse jaotamise kaudu kolme komponendi vahel:

  • Model — andmed ja äriloogika.
  • View — visuaalsed elemendid (UIView, UIViewController).
  • ViewModel — vahendaja, mis teisendab mudelist saadud andmed sobivasse vormingusse, et neid View-s kuvada.

UIKit-s MVVM-i rakendamine hõlmab tavaliselt:

  1. Luua ViewModel, mis sisaldab omadusi ja meetodeid andmete ettevalmistamiseks.
  2. ViewController registreerub muutustele ViewModel-is (KVO, Combine, RxSwift või delegaatide kaudu) ning uuendab UI-d.
  3. ViewModel ei sisalda viiteid View-le, mis suurendab testitavust.

Näide lihtsustatud ViewModel-ist:

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

ViewControlleris tellib aboneeruma onNameChanged ja uuendab UI andmete muutmisel.