Junior — Middle
Hogyan történik az adatok cseréje a modulok között SwiftUI-ban a Combine használatával?
sobes.tech MI
Válasz az MI-től
SwiftUI-ban, a Combine használatával az adatok cseréje általában reaktív adatfolyamokon és állapotkötéseken keresztül történik. A fő megközelítések:
-
ObservableObject és @Published: létrehozunk egy osztályt, amely megvalósítja az ObservableObject protokollt, és a figyelni kívánt tulajdonságokat @Published jelöli. Más modulok az @ObservedObject vagy @StateObject segítségével iratkoznak fel a változásokra.
-
PassthroughSubject és CurrentValueSubject: események vagy értékek továbbítása közvetlen kapcsolat nélkül a modulok között.
Példa:
import SwiftUI
import Combine
class UserSettings: ObservableObject {
@Published var username: String = ""
}
struct ContentView: View {
@StateObject var settings = UserSettings()
var body: some View {
VStack {
TextField("Felhasználónév", text: $settings.username)
ProfileView(settings: settings)
}
}
}
struct ProfileView: View {
@ObservedObject var settings: UserSettings
var body: some View {
Text("Helló, \(settings.username)!")
}
}
Így egy modulban történt változások automatikusan tükröződnek a másikban a Combine és a SwiftUI segítségével.