Sobes.tech
Junior — Middle

Jak wdrażasz wzorzec architektoniczny MVVM podczas tworzenia z UIKit?

sobes.tech AI

Odpowiedź od AI

Wzorzec architektoniczny MVVM (Model-View-ViewModel) w UIKit realizuje się poprzez podział odpowiedzialności między trzema komponentami:

  • Model — dane i logika biznesowa.
  • View — elementy wizualne interfejsu (UIView, UIViewController).
  • ViewModel — pośrednik, który przekształca dane z modelu w format odpowiedni do wyświetlenia w View.

Implementacja MVVM w UIKit zazwyczaj obejmuje:

  1. Tworzenie ViewModel, który zawiera właściwości i metody do przygotowania danych.
  2. ViewController subskrybuje zmiany w ViewModel (przez KVO, Combine, RxSwift lub delegaty) i aktualizuje UI.
  3. ViewModel nie zawiera odwołań do View, co zwiększa testowalność.

Przykład uproszczonego 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
    }
}

W ViewController subskrybujemy onNameChanged i aktualizujemy UI przy zmianie danych.