Sobes.tech
Junior — Middle

Como é efetuada a troca de dados entre módulos em SwiftUI usando Combine?

sobes.tech IA

Resposta da IA

Em SwiftUI, usando Combine, a troca de dados entre módulos geralmente é feita através de fluxos de dados reativos e ligação de estados. As abordagens principais:

  • ObservableObject e @Published: cria-se uma classe que implementa o protocolo ObservableObject, e as propriedades que precisam ser monitoradas são marcadas com @Published. Outros módulos assinam as mudanças através de @ObservedObject ou @StateObject.

  • PassthroughSubject e CurrentValueSubject: para transmitir eventos ou valores entre módulos sem ligação direta.

Exemplo:

import SwiftUI
import Combine

class UserSettings: ObservableObject {
    @Published var username: String = ""
}

struct ContentView: View {
    @StateObject var settings = UserSettings()

    var body: some View {
        VStack {
            TextField("Username", text: $settings.username)
            ProfileView(settings: settings)
        }
    }
}

struct ProfileView: View {
    @ObservedObject var settings: UserSettings

    var body: some View {
        Text("Hello, \(settings.username)!")
    }
}

Dessa forma, as alterações em um módulo refletem-se automaticamente em outro através do Combine e SwiftUI.