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.