Back to listSwift
RxSwift-style Observable
Lv.51401@mukitaro0 playsJan 2, 2026
RxSwift reactive programming pattern. Reactive Extensions for Swift.
preview.swift
1import RxSwift2import RxCocoa3 4struct User {5 let id: Int6 let name: String7 let email: String8}9 10class UserViewModel {11 private let disposeBag = DisposeBag()12 13 let searchText = BehaviorRelay<String>(value: "")14 let users = BehaviorRelay<[User]>(value: [])15 let isLoading = BehaviorRelay<Bool>(value: false)16 let error = PublishRelay<Error>()17 18 var filteredUsers: Observable<[User]> {19 Observable.combineLatest(users, searchText)20 .map { users, query in21 guard !query.isEmpty else { return users }22 return users.filter { $0.name.lowercased().contains(query.lowercased()) }23 }24 }25 26 func fetchUsers() {27 isLoading.accept(true)28 29 fetchUsersFromAPI()30 .observe(on: MainScheduler.instance)31 .subscribe(32 onNext: { [weak self] users in33 self?.users.accept(users)34 },35 onError: { [weak self] err in36 self?.error.accept(err)37 },38 onCompleted: { [weak self] in39 self?.isLoading.accept(false)40 }41 )42 .disposed(by: disposeBag)43 }44 45 private func fetchUsersFromAPI() -> Observable<[User]> {46 return Observable.just([User(id: 1, name: "Alice", email: "alice@example.com")])47 }48}Custom problems are not included in rankings