SwiftUI Academy · Aula

Projetando um ViewModel

Crie um modelo de visualização @Observable para uma tela.

Aula 2 de 413 etapas

Projetando um ViewModel é uma aula grátis de SwiftUI Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de SwiftUI Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de SwiftUI Academy inclui 4 aulas no total.

Partes desta aula ainda não foram traduzidas e aparecem em inglês.

A ViewModel Is Just a Class

A ViewModel is usually a class that holds the state and logic for one screen. Using a class lets several views share the same live instance.

class ProfileViewModel {
    var name: String = ""
}

Make It Observable

Add the @Observable macro so SwiftUI tracks property changes and re-renders the view automatically when state updates.

@Observable
class ProfileViewModel {
    var name = ""
}

Expose View-Ready State

Give the ViewModel properties the view can read directly, like a formatted greeting, so the view never does its own string building.

var greeting: String {
    "Hi, " + name
}

Hold the Loading Flag

Track UI status inside the ViewModel. A simple isLoading boolean lets the view decide when to show a spinner versus content.

var isLoading = false

Keep Intent in Methods

Expose actions as methods like load() or save(). The view calls them on tap; the ViewModel decides exactly what happens.

func load() {
    isLoading = true
}

Name Properties for the UI

Name state after what the screen shows, like buttonTitle or rows, not after raw data. This keeps the view almost declarative.

Hide the Messy Details

Parsing, math, and edge cases belong inside the ViewModel. The view should see clean values and never touch the rough work.

One ViewModel per Screen

Give each screen its own focused ViewModel. A small, single-purpose model is far easier to read, reason about, and test.

Start Empty, Then Fill

Initialize the ViewModel with sensible empty defaults, then populate it when data arrives. The view shows a calm empty state meanwhile.

Avoid View Code Inside

Never import view types or layout code into a ViewModel. Keeping it UI-free is what makes it portable and easy to unit test. ✨

A Complete Small Example

This tiny ViewModel exposes a count and a method to change it, giving the view everything it needs in two clear members.

@Observable
class CounterViewModel {
    var count = 0
    func increment() { count += 1 }
}

Quick Check

Which macro makes a ViewModel class trigger SwiftUI updates?

Recap: Designing a ViewModel

You built an @Observable class that exposes view-ready state and intent methods while hiding the messy details. Next you will bind views to it.

Grátis para começar

Aprenda Swift com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
30
Aulas
120

Perguntas Frequentes

A aula “Projetando um ViewModel” é grátis?

Sim — o texto completo de “Projetando um ViewModel” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de SwiftUI Academy, atualize para CoddyKit PRO. O curso de SwiftUI Academy inclui 4 aulas no total.

O que vou aprender em “Projetando um ViewModel”?

Crie um modelo de visualização @Observable para uma tela. Você pratica SwiftUI Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar SwiftUI Academy?

Nenhuma experiência prévia é necessária. SwiftUI Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Projetando um ViewModel”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de SwiftUI Academy?

Sim. Cada aula de SwiftUI Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Por que MVVM se Adapta ao SwiftUI
  2. Projetando um ViewModel
  3. Vinculando Visualizações a ViewModels
  4. Injeção de Dependências para ViewModels
← Voltar para SwiftUI Academy