0Pricing
SwiftUI Academy · Aula

Publishers e Subscribers

Entenda o fluxo central do Combine.

Publishers e Subscribers é uma aula grátis de SwiftUI Academy no CoddyKit. Esta é a aula 1 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.

Meet Combine

Combine is Apple's framework for handling values that arrive over time, like taps, timers, or network responses. 🌊

Values Over Time

Instead of asking for data once, you describe a stream of values and react each time a new one arrives, now or later.

What a Publisher Does

A Publisher is the source. It emits values downstream and tells you when it finishes or fails.

let publisher = [1, 2, 3].publisher

Output and Failure

Every publisher declares two types: its Output (the values it sends) and its Failure (the error it may throw).

Just(42) // Output: Int, Failure: Never

What a Subscriber Does

A Subscriber attaches to a publisher, receives each value as it arrives, and decides what to do with it.

Connecting with sink

The sink subscriber is the simplest one: you hand it a closure that runs for every value received.

publisher.sink { value in
    print(value)
}

Handling Completion

A fuller sink takes two closures: one for completion (finished or failure) and one for each value.

publisher.sink(
    receiveCompletion: { print($0) },
    receiveValue: { print($0) }
)

Storing the Subscription

Subscribing returns a cancellable. Keep it alive, or the stream is torn down immediately.

var bag = Set<AnyCancellable>()
publisher.sink { _ in }
    .store(in: &bag)

Just and Empty

Just emits one value then finishes. Empty finishes with no values at all. Both are handy building blocks.

let one = Just("hello")

Subjects Push Values

A PassthroughSubject lets you send values manually, perfect for forwarding events you control.

let subject = PassthroughSubject<Int, Never>()
subject.send(5)

The Pull and Push Flow

The subscriber signals demand, the publisher pushes values, and completion ends the relationship cleanly.

Quick Check

You attached a closure to a publisher and nothing printed. What likely went wrong?

Recap: The Combine Trio

You met the three players: a publisher emits values, a subscriber receives them, and a stored cancellable keeps the link alive. 🎉

Perguntas Frequentes

A aula “Publishers e Subscribers” é grátis?

Sim — o texto completo de “Publishers e Subscribers” é 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 “Publishers e Subscribers”?

Entenda o fluxo central do Combine. 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 1 de 4.

Quanto tempo leva a aula “Publishers e Subscribers”?

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. Publishers e Subscribers
  2. Transformando com map e filter
  3. Debounce para Busca Instantânea
  4. Conectando Combine ao SwiftUI
← Voltar para SwiftUI Academy