0Pricing
Swift Academy · Pelajaran

PassthroughSubject dan CurrentValueSubject

Menggunakan subject sebagai jembatan antara kode imperatif dan alur pemrosesan Combine.

PassthroughSubject dan CurrentValueSubject adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Swift Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Swift Academy mencakup 4 pelajaran total.

Selamat Datang

Subjek adalah penerbit sekaligus pelanggan. Subjek menjembatani kode imperatif dengan alur pemrosesan Combine reaktif.

PassthroughSubject

```swift let subject = PassthroughSubject() subject.sink { print($0) }.store(in: &cancellables) subject.send("Hello") subject.send("World") // Hello, World ``` Pelanggan yang bergabung terlambat tidak menerima nilai yang telah dikirim sebelumnya.

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 ``` Menyimpan dan memutar ulang nilai saat ini kepada pelanggan baru.

PassthroughSubject vs CurrentValueSubject

• `PassthroughSubject`—tidak menyimpan nilai; pelanggan yang bergabung terlambat tidak melihat apa pun • `CurrentValueSubject`—menyimpan nilai terbaru; pelanggan yang bergabung terlambat langsung menerimanya

Mengirim Penyelesaian

```swift subject.send(completion: .finished) // or: subject.send(completion: .failure(MyError.bad)) ``` Setelah penyelesaian, tidak ada nilai lain yang dapat dikirim.

Menggunakannya sebagai Penerbit

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

Menjembatani dari Delegasi

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

Keamanan Utas

Subjek secara bawaan tidak aman digunakan lintas utas. Kirim nilai dari utas yang konsisten atau gunakan `receive(on:)` untuk berpindah.

Menguji dengan Subjek

```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 dalam 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) } } ```

Pemeriksaan Singkat

Subject mana yang memutar ulang nilai saat ini kepada pelanggan baru?

Rangkuman

Hal-hal penting: • `PassthroughSubject`—tidak menyimpan nilai dan tidak memutar ulang • `CurrentValueSubject`—menyimpan nilai dan memutarnya ulang kepada pelanggan yang bergabung terlambat • `send(completion:)` mengakhiri aliran • `eraseToAnyPublisher()` menyembunyikan antarmuka subjek • Subjek menjembatani kode imperatif → reaktif Berikutnya: Jaringan dengan Combine.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “PassthroughSubject dan CurrentValueSubject” gratis?

Ya — teks lengkap “PassthroughSubject dan CurrentValueSubject” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Swift Academy, upgrade ke CoddyKit PRO. Kursus Swift Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “PassthroughSubject dan CurrentValueSubject”?

Menggunakan subject sebagai jembatan antara kode imperatif dan alur pemrosesan Combine. Kamu berlatih Swift Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Swift Academy?

Tidak diperlukan pengalaman sebelumnya. Swift Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “PassthroughSubject dan CurrentValueSubject” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Swift Academy ini?

Ya. Setiap pelajaran Swift Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Penerbit dan Pelanggan
  2. Operator: map, filter, combineLatest
  3. PassthroughSubject dan CurrentValueSubject
  4. Jaringan dengan Combine dan URLSession
← Kembali ke Swift Academy