0Pricing
Swift Academy · Lektion

PassthroughSubject und CurrentValueSubject

Verwenden Sie Subjects als Brücken zwischen imperativem Code und Combine-Pipelines.

PassthroughSubject und CurrentValueSubject ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Swift Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.

Willkommen

Subjects sind sowohl Publisher als auch Subscriber. Sie verbinden imperativen Code mit reaktiven Combine-Pipelines.

PassthroughSubject

```swift let subject = PassthroughSubject() subject.sink { print($0) }.store(in: &cancellables) subject.send("Hello") subject.send("World") // Hello, World ``` Später hinzukommende Subscriber verpassen zuvor gesendete Werte.

CurrentValueSubject

```swift let subject = CurrentValueSubject(0) subject.sink { print($0) }.store(in: &cancellables) // prints 0 immediately subject.value = 1 // prints 1 subject.value = 2 // prints 2 ``` Speichert den aktuellen Wert und gibt ihn an neue Subscriber erneut aus.

PassthroughSubject vs. CurrentValueSubject

• `PassthroughSubject` – kein gespeicherter Wert; später hinzukommende Subscriber sehen nichts • `CurrentValueSubject` – speichert den neuesten Wert; später hinzukommende Subscriber erhalten ihn sofort

Abschluss senden

```swift subject.send(completion: .finished) // or: subject.send(completion: .failure(MyError.bad)) ``` Nach dem Abschluss können keine weiteren Werte gesendet werden.

Als Publisher verwenden

```swift let events: AnyPublisher = subject.eraseToAnyPublisher() // Expose only the Publisher interface, hide Subject ```

Brücke von einem Delegate

```swift class LocationManager: NSObject, CLLocationManagerDelegate { let locationSubject = PassthroughSubject() func locationManager(_ m: CLLocationManager, didUpdateLocations l: [CLLocation]) { locationSubject.send(l.last!) } } ```

Thread-Sicherheit

Subjects sind standardmäßig nicht threadsicher. Senden Sie Werte aus einem konsistenten Thread oder verwenden Sie `receive(on:)` zum Wechseln.

Mit Subjects testen

```swift func testSearch() { let subject = PassthroughSubject() var results: [String] = [] subject.sink { results.append($0) }.store(in: &cancellables) subject.send("swift"); subject.send("ios") XCTAssertEqual(results, ["swift","ios"]) } ```

Combine in MVVM

```swift class SearchViewModel: ObservableObject { let querySubject = CurrentValueSubject("") @Published var results: [String] = [] init() { querySubject .debounce(for: 0.3, scheduler: RunLoop.main) .flatMap { search($0) } .assign(to: &$results) } } ```

Kurzer Test

Welches Subject gibt seinen aktuellen Wert an neue Subscriber erneut aus?

Zusammenfassung

Die wichtigsten Punkte: • `PassthroughSubject` – kein gespeicherter Wert, keine erneute Ausgabe • `CurrentValueSubject` – speichert den Wert und gibt ihn an später hinzukommende Subscriber erneut aus • `send(completion:)` beendet den Stream • `eraseToAnyPublisher()` verbirgt die Subject-Schnittstelle • Subjects verbinden imperativen und reaktiven Code Als Nächstes: Netzwerkanbindung mit Combine.

Häufig gestellte Fragen

Ist die Lektion „PassthroughSubject und CurrentValueSubject“ kostenlos?

Ja — der vollständige Text von „PassthroughSubject und CurrentValueSubject“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Swift Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „PassthroughSubject und CurrentValueSubject“?

Verwenden Sie Subjects als Brücken zwischen imperativem Code und Combine-Pipelines. Du übst Swift Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Swift Academy zu starten?

Keine Vorkenntnisse erforderlich. Swift Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „PassthroughSubject und CurrentValueSubject“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Swift Academy-Lektion Code schreiben und ausführen?

Ja. Jede Swift Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Publisher und Subscriber
  2. Operatoren: map, filter, combineLatest
  3. PassthroughSubject und CurrentValueSubject
  4. Netzwerkzugriffe mit Combine und URLSession
← Zurück zu Swift Academy