Sobes.tech
Junior — Middle

Como você implementa o padrão arquitetônico MVVM ao desenvolver com UIKit?

sobes.tech IA

Resposta da IA

O padrão de arquitetura MVVM (Model-View-ViewModel) no UIKit é implementado através da separação de responsabilidades entre três componentes:

  • Model — dados e lógica de negócio.
  • View — elementos visuais da interface (UIView, UIViewController).
  • ViewModel — intermediário que transforma os dados do modelo num formato adequado para exibição na View.

A implementação do MVVM no UIKit geralmente inclui:

  1. Criar um ViewModel que contenha propriedades e métodos para preparar os dados.
  2. O ViewController subscreve-se às mudanças no ViewModel (através de KVO, Combine, RxSwift ou delegados) e atualiza a UI.
  3. O ViewModel não contém referências à View, o que aumenta a testabilidade.

Exemplo de um ViewModel simplificado:

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

No ViewController, subscrevemos onNameChanged e atualizamos a UI quando os dados mudam.