본문 바로가기

IOS🍎/RxSwift11

[RxSwift] Transforming Operator (map, flatMap, scan, reduce) 오늘은 observable 데이터를 가공하는 operator에 대해 살펴보겠습니다. 1) Map Observerble에 의해 방출되는 아이템들에 대해 각각 함수를 적용하여 변환합니다. map을 사용하는 예시입니다. let ob = Observable.of("1", "2", "3", "4") ob.map { Int($0)! } .subscribe(onNext: { item in print(item) }).disposed(by: disposeBag) //출력 //1 //2 //3 //4 string타입의 observable을 map operator를 통해 모든 item을 Int 타입으로 캐스팅 해주었습니다. 2) FlatMap flatMap은 map과는 다르게 스트림에서 방출되는 아이템들을 다른 observ.. 2022. 5. 16.
[RxSwift] Filtering Operator (distinctUntilChanged) DistinctUntilChanged 연달아 같은 값이 오면 생략한다. Observable.of(1, 2, 2, 1, 3) .distinctUntilChanged() .subscribe(onNext: { print($0) }) .disposed(by: disposeBag) /* Prints : 1 2 1 3 /* 2022. 5. 10.
[RxSwift] Error Handling Operator Network Error Handling에 대해 알아보다가 관련 operator들을 정리해보려구 합니다. 참고 : https://okanghoon.medium.com/rxswift-5-error-handling-example-9f15176d11fc RxSwift #5 — Error Handling & Example 이번에는 RxSwift에서 어떻게 Error Handling 을 하는지 앱에서 흔히 발생하는 에러 예제들을 통해 알아보려고 한다. okanghoon.medium.com RxSwift에서는 Error Handling을 하는데 다음과 같은 방법이 있습니다. 1. Catch 특정 값으로 error 복구 2. Retry 재시도 3. materialize / dematerialize : Sequence.. 2022. 5. 10.
[RxSwift] Schedular란 (subscribeOn, observeOn) 이름은 조금 다르지만 어느 곳에서 작업 할지(main, global) 실행 흐름의 위치를 지정해주는 것을 말합니다. 기본 swift에서는 thread 작업을 비동기적으로 처리하기 위해 GCD를 사용했었습니다. RxSwift에서 GCD에 대응되는 개념이 Schedular라고 할 수 있습니다. Schedular를 통해 Observable을 어디서 생성할지, Observer가 어디서 관찰할지 지정해 줄 수 있습니다. observeOn 과 subscribeOn은 스케줄러로 작동되는 대표적인 두 연산자입니다. observeOn과 subscribeOn 둘의 차이를 명확하게 구분하는데 있어 http://rx-marin.com/post/observeon-vs-subscribeon/ observeOn vs. subscr.. 2022. 4. 29.
[RxSwift] Signal, ControlProperty, ControlEvent 란 ? 저번 Driver에 이어서 나머지 Trait들도 마저 다 살펴보려고 합니다. Signal signal은 Driver와 유사합니다. 하지만 Driver는 subscribe할 때 한번 replay 하는 반면, Signal은 그렇지 않습니다. Driver와 Signal을 구독하게 되면 다음과 같이 replay 합니다. PublishRelay와 BehaviorRelay과 같이 Signal은 구독 이후의 이벤트를 방출하고 Driver은 구독을 하면 가장 최근의 이벤트를 방출한다는 점에서 차이점이 있습니다. ControlProperty UI Element의 property를 나타내기 위한 Trait 특징 실패하지 않는다. share(replay: 1) 처럼 행동한다 - stateful, subscribe 호출 시 .. 2022. 3. 21.
[RxSwift] Driver란 ? (feat. bind) observable을 생성하고 구독 할 때 가끔 subscribe 대신 asDriver(), drive()로 받는 경우가 있습니다 .. 뭐지 ?? 하면서 잊고 살던 중 traits 관련 문서를 읽고 driver가 있어 정리 해보려구 합니다 ! 참고 문서 : https://github.com/ReactiveX/RxSwift/blob/main/Documentation/Traits.md#driver GitHub - ReactiveX/RxSwift: Reactive Programming in Swift Reactive Programming in Swift. Contribute to ReactiveX/RxSwift development by creating an account on GitHub. github.co.. 2022. 3. 21.
[RxSwift] Traits 이란 Single, Maybe, Completable라는 세 가지 Trait이 있습니다. Single Observable의 변형으로 일련의 요소를 방출하는대신 항상 단일 요소 또는 오류를 방출하도록 합니다. Single을 사용하는 일반적인 예는 URLSession에 response로의 .success, .error을 방출하는데 사용됩니다. Single 생성하기 func getRepo(_ repo: String) -> Single { return Single.create { single in let task = URLSession.shared.dataTask(with: URL(string: "https://api.github.com/repos/\(repo)")!) { data, _, error in if let.. 2022. 3. 19.
[RxSwift] Disposable DisposeBag 이란 이번시간에는 disposable에 대해 공부해볼 것입니다. 매번 subscribe 해주고 dispose(by: disposeBag)에 담아주는데요 여기서 onDisposed는 Observable이 메모리에서 해제되면서 호출되어 집니다. Observable이 onNext -> error 혹은 completed 이벤트를 호출하고 종료되면 리소스를 관리해 줄 필요 없이 정상적으로 메모리가 해제 되지만 Rxswift 공식 가이드라인을 보면 이 경우에도 리소스를 정리하는 것을 권고 하고 있습니다. 이때 Disposable 타입을 모두 모아 한번에 해제할 수 있게끔 하는 방법이 DisposeBag을 이용하는 방법입니다. subscribe의 원형인데요. 리턴 타입으로 Disposable을 반환하는데 이것들을 Disp.. 2022. 3. 17.
[RxSwift] Combine Operator(CombineLatest, Merge, StartWith, Concat, Zip, WithLastFrom, Sample, SwitchLatest, Debounce) rxSwift에 대한 강의를 듣다가 자주 사용하는 operator에 대해 정리해 놓으면 좋을 것 같다는 생각이 들더라구요 그래서 오늘은 유용하게 사용되는 operator들에 대해 정리해보도록 하겠습니다 계속 operator에 관해 사용할때마다 여기에 정리해 놓을려구요 ! Combine 서로 다른 스트림을 하나의 스트림으로 합칠때 사용하는 operator CombineLatest 두 observable에서 아이템을 방출할때 가장 최신의 아이템을 결합하고, 결합된 아이템을 발행 let left = PublishSubject() let right = PublishSubject() let observable = Observable.combineLatest(left, right, resultSelector: { .. 2022. 3. 6.
[RxSwift] 2. Subject와 Relay 오늘은 subject란 무엇인지에 대해 공부해보겠습니다 subject는 observable과 observer의 역할을 모두 수행하는 bridge/proxy입니다. 그러니까는 데이터를 넣어줄수도(onNext), subscribe 할수도 있다는 거죠 ! observer처럼 subscribe할 수 있지만 subject는 여러 observer 구독 가능한 multicast 이고 observable는 하나의 observer만 가능한 unitcast입니다. unicast와 multicast는 어떤 차이가 있을까요 ? 일반적인 Observable은 어떠한 상태도 가지지 않습니다. 따라서 모든 Observer가 구독하게 되면 그때마다 새로 생성(create)하여 발행하는 과정을 거치게 됩니다. let randomNum.. 2021. 11. 20.
[RxSwift ] 1. Observable이란 RxSwift에 대해 공부하려고 보니 숨이 턱턱 막히는 거 같아서 개념을 흝어 보는거 말고 내 나름대로 정리해야겠다는 필요성을 느꼈다 ..! 그래서 오늘부터 TIL 식으로 하나 하나씩 뽀개보려고 한다 차차 굵은 뼈대부터 잡고 세세하게 마스터 하는 것이 목표다 RxSwift(알스)야 친해지자아 🐰🐵🦄 그래서 오늘은 첫번째로 가장 중요한 개념 Observable에 대해 살펴볼것이다 조금씩 더 알게 되면은 추가할 예정이다 참고한 글은 공식 docs를 참고하였다 http://reactivex.io/documentation/observable.html ReactiveX - Observable Observable In ReactiveX an observer subscribes to an Observable. The.. 2021. 11. 15.