Sobes.tech
Junior — Middle

როგორ ახორციელებთ MVVM არქიტექტურულ ნიმუშს UIKit-თან მუშაობისას?

sobes.tech AI

პასუხი AI-სგან

UIKit-ში MVVM (Model-View-ViewModel) არქიტექტურული ნიმუში ხორციელდება პასუხისმგებლობების გაყოფით სამ კომპონენტს შორის:

  • Model — მონაცემები და ბიზნეს ლოგიკა.
  • View — ვიზუალური ელემენტები (UIView, UIViewController).
  • ViewModel — შუამავალი, რომელიც გარდაქმნის მოდელიდან მონაცემებს View-ში გამოსაჩენ ფორმატში.

UIKit-ში MVVM-ის განხორციელება ჩვეულებრივ მოიცავს:

  1. შექმენით ViewModel, რომელიც შეიცავს თვისებებს და მეთოდებს მონაცემების მომზადებისთვის.
  2. ViewController-ი აბონდება ViewModel-ის ცვლილებებს (KVO, Combine, RxSwift ან დელეგატების საშუალებით) და განაახლებს UI-ს.
  3. ViewModel არ შეიცავს View-ის მითითებებს, რაც ზრდის ტესტირებადობას.

სადავიწროებული 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
    }
}

ViewController-ში აბონდება onNameChanged-ს და განაახლებს UI-ს მონაცემების ცვლილებისას.