Sobes.tech
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.