ios 50일차

bin·2026년 3월 13일

RxSwift 정리

1. Operator란?

Operator는 Observable이 방출하는 데이터를 변환, 필터링, 조합하는 함수다. 수도관 비유로 표현하면 파이프 중간에 달린 필터나 변환기라고 볼 수 있다.

Operator는 크게 4가지로 분류된다.

변환 (Transforming) → 데이터의 형태를 바꾼다 map, flatMap, scan
필터링 (Filtering) → 조건에 맞는 데이터만 통과 filter, distinctUntilChanged, debounce
조합 (Combining) → 여러 스트림을 합친다 zip, combineLatest, merge
에러 처리 (Error) → 에러를 복구하거나 재시도한다 catch, retry

2. 변환 Operator

2-1. map — 데이터를 다른 형태로 변환

각 요소를 받아서 다른 타입이나 다른 값으로 변환한다.

2-2. flatMap — Observable을 또 다른 Observable로 변환

map은 값을 변환하지만, flatMap은 값을 받아서 새로운 Observable을 만들고 그 결과를 평탄화한다.

2-3. flatMapLatest — 가장 최신 Observable만 유지

flatMap은 모든 요청의 결과를 받지만, flatMapLatest는 새 값이 오면 이전 Observable을 취소하고 최신 것만 유지한다.

flatMap vs flatMapLatest 선택 기준

  • flatMap : 모든 요청의 결과가 필요할 때 (여러 파일 동시 다운로드)
  • flatMapLatest : 항상 최신 요청의 결과만 필요할 때 (실시간 검색)

2-4. scan — 누적값을 계산한다

이전 결과와 새 값을 합쳐서 누적된 결과를 방출한다. Swift의 reduce와 비슷하지만 중간 결과를 모두 방출한다.

3. 필터링 Operator

  • filter — 조건에 맞는 값만 통과
  • distinctUntilChanged — 연속으로 같은 값이 오면 무시
  • debounce — 마지막 값이 오고 N초 후에 방출
  • take / skip — 앞에서 N개만 받거나 건너뛴다

4. 조합 Operator

  • zip — 두 스트림을 쌍으로 묶는다
  • combineLatest — 각 스트림의 최신값을 조합한다
  • merge — 여러 스트림을 하나로 합친다

5. 에러 처리 Operator

  • catch — 에러를 복구한다
  • retry — 에러 시 재시도한다

0개의 댓글