본문 바로가기

rxswift9

[Design Patterns] ReactorKit ReactorKit에 관해 정리한 것을 기록합니다. ReactorKit 반응형 및 단방향 Swift 애플리케이션 아키텍처를 위한 프레임워크 옵저버블 스트림을 통하여 각 User Action & View States 레이어에 전달 View만 Action을 방출하며, Reactor만 States를 방출함 ReactorKit’s Design Goal Testablility → 뷰에서 비즈니스 로직을 분리하여 테스트하기 쉬워짐. Start Small → ReactorKit은 애플리케이션 전체가 이를 따를 필요 없이 부분적으로 적용할 수 있음. → ReactorKit을 사용하기 위해 전체 코드를 재작성할 필요 없음. Less Typing → ReactorKit은 단순한 일에 복잡한 코드를 회피하며, 다른 아키텍처.. 2023. 1. 10.
[RxSwift] Time Based Operators Time Based Operators 에 관해 정리한 내용을 기록합니다. Time Based Operators Interval 주어진 시간 간격을 두고 주기마다 방출되는 Operator completed 되지 않고 무한한 시퀀스를 생성한다. disposed 하지 않으면 구독 이후 계속 반복하여 방출한다. public static func interval(_ period: RxTimeInterval, scheduler: SchedulerType) -> Observable { return Timer( period: period, // 이벤트가 방출되는 주기 scheduler: scheduler // 스케쥴러 설정 ) } Observable .interval(.seconds(3), scheduler: Main.. 2022. 7. 18.
[RxSwift] Extension Reactive Extension Reactive에 관한 내용을 기록합니다. RxSwift 라이브러리 코드 중 Reactive.swift 안에 코드와 주석을 보면 Extend Reactive protocol with constrain on Base Put any specific reactive extension for SomeType here Base에 특정 타입을 지정해서 Reactive를 확장해서 사용하라 합니다. @dynamicMemberLookup public struct Reactive { /// Base object to extend. public let base: Base /// Creates extensions with base object. /// /// - parameter base: Base obje.. 2022. 7. 14.
[RxSwift] Combining Operators Combining Operators 에 관해 정리한 내용을 기록합니다. Combining Operators startWith 요소들의 스트림을 방출하기 전에 설정한 요소를 처음으로 시작하여 스트림을 진행할 수 있다. 현재 상태, 위치나 네트워크 연결 상태 등과 같은 데에 사용한다. Observable.of(2, 3) .startWith(1) .subscribe(onNext: { print($0) }) .disposed(by: bag) /* 1 2 3 */ concat 두 개의 스트림을 연결한 것이다. let firstObservables = Observable.of(1,1,1) let secondObservables = Observable.of(2,2) firstObservables .concat(sec.. 2022. 5. 26.
[RxSwift] Transforming Operators Transforming Operators 에 관해 정리한 내용을 기록합니다. Transforming Operators toArray Observable을 다른 객체 또는 자료 구조로 변환한다. Observable.of(1,2,3,4) .toArray() .subscribe(onSuccess: { print($0) }) .disposed(by: bag) // [1,2,3,4] map Observable에서 방출된 각각의 요소를 원하는 함수를 적용하여 변환한다. 기존 map과 동일하게 작동하고 Observable에서 동작한다는 점이 다르다. Observable.range(start: 1, count: 3) .map { $0 * $0 } .subscribe(onNext: { print($0, terminato.. 2022. 1. 2.
[RxSwift] Filtering Operators (Taking) Filtering Operators 중 Taking Operators에 관해 정리한 내용을 기록합니다. Taking Operators take take 는 skip 의 반대 개념이며 처음부터 n 번째까지 방출할 수 있다. Observable.of(1,2,3,4,5) .take(3) .subscribe(onNext: { print($0, terminator: " ") }) .disposed(by: bag) // 1 2 3 takeWhile takeWhile body 내에서 설정한 로직에 따라 false 전까지만 방출한다. skipWhile과 비슷하다. Observable.of(1,3,5,7,9) .enumerated() .take(while: { $0.index < 4 && $0.element % 2 ==.. 2022. 1. 1.
[RxSwift] Filtering Operators (Ignoring) Filtering Operators 중 Ignoring Operators에 관해 정리한 내용을 기록하겠습니다. Ignoring Operators 1. IgnoreElements 어떠한 이벤트도 방출하지 않는다. -> .next를 무시한다. .completed 또는 .error 와 같은 이벤트는 허용한다. let data = PublishSubject() let bag = DisposeBag() data .ignoreElements() .subscribe({ _ in print("Event is Emitted.") }) .disposed(by: bag) // onNext 이벤트들 무시됨 data.onNext(1) data.onNext(2) data.onNext(3) // Completed 호출되고 Even.. 2021. 5. 11.
[RxSwift] Subject Subject에 대해서 기록해보겠습니다. Subject: Observer와 Observable의 역할을 둘 다 하는 bridge 또는 proxy의 종류이다. Observer의 역할을 하기 때문에 하나 이상의 Observable을 구독(subscribe)할 수 있다. Observable의 역할을 하기 때문에 관찰한 이벤트를 방출(emit)할 수 있고 새 이벤트를 방출할 수 있다. Observable을 구독하기 때문에, Observable이 이벤트를 방출할 수 있도록 트리거의 역할을 한다. -> "Cold" Observable를 "Hot"하게 바꿔주는 효과가 있다. "Cold" Observable: 구독되는 시점부터 이벤트를 생성하여 방출한다. "Hot" Observable: 생성되자마자 이벤트를 방출하고 .. 2021. 2. 24.
[RxSwift] Observable Observable에 대해서 기록해보겠습니다. 공식문서 (ReactiveX)에서는 Observer는 Observable을 구독(subscribe)한다. 그리고 그 Observer는 Observable에서 방출(emit)하는 item이나 item의 순서(sequence)에 반응한다. 이러한 패턴은 Observable이 객체를 방출하기를 기다리는 동안 차단할 필요가 없기 때문에 동시 작업(concurrent operations)을 수월하게 하지만 대신 Observable이 미래의 어떤 시간에 적절히 반응할 준비가 되어 있는 관찰자(observer)의 형태로 보초(sentry)를 서게 됩니다. Observable 생명 주기 Create Subscribe onNext onCompleted or onError D.. 2021. 2. 16.