안녕하세요, iOS 개발하는 루피입니다.
오늘은 RxSwift에서 핵심 오퍼레이터들에 대해 재미있게 알아보려 합니다. RxSwift는 다채로운 오퍼레이터를 제공하여 비동기 데이터를 더 효과적으로 다룰 수 있게 해줍니다. 그럼, RxSwift의 핵심 오퍼레이터들을 소개하며 시작하도록 하겠습니다!!
map
map 오퍼레이터는 데이터의 형태를 변환해 줍니다. 입력값을 원하는 형태로 변환하여 새로운 Observable을 생성하죠. 예를 들어, 서버에서 받아온 JSON 데이터를 우리 앱에서 사용하기 좋은 형태로 바꿔준답니다.
let numbers = Observable.of(1, 2, 3, 4)
let mappedNumbers = numbers.map { $0 * 2 }
mappedNumbers.subscribe(onNext: { print($0) }) // 2, 4, 6, 8
이렇게 간단하게 숫자들을 두 배로 변환할 수 있습니다.
filter
filter 오퍼레이터는 원하지 않는 데이터를 거르고, 필요한 데이터만을 선별해 줍니다.
let numbers = Observable.of(1, 2, 3, 4, 5)
let evenNumbers = numbers.filter { $0 % 2 == 0 }
evenNumbers.subscribe(onNext: { print($0) }) // 2, 4
이 코드에서는 짝수만 골라서 출력해 줍니다. 실생활에서도 유용하게 활용할 수 있겠죠?
merge
merge 오퍼레이터는 여러 Observable을 하나로 합치는 역할을 합니다. 여러 개의 이벤트 스트림을 하나로 묶어줄 수 있어요.
let first = Observable.of("A", "B", "C")
let second = Observable.of("1", "2", "3")
let merged = Observable.merge(first, second)
merged.subscribe(onNext: { print($0) }) // A, B, C, 1, 2, 3
여러 데이터 소스를 하나로 합쳐서 처리할 수 있습니다.
combineLatest
combineLatest 오퍼레이터는 여러 Observable의 최신 값을 조합하여 새로운 Observable을 만들어줍니다. 마치 최근 업데이트된 데이터를 모아서 보여주는 것과 같죠.
let names = Observable.of("Alice", "Bob", "Charlie")
let ages = Observable.of(25, 30, 35)
let combined = Observable.combineLatest(names, ages) { name, age in
"\\(name) is \\(age) years old"
}
combined.subscribe(onNext: { print($0) })
// Alice is 25 years old
// Bob is 30 years old
// Charlie is 35 years old
이렇게 하면 다양한 데이터를 조합하여 유용한 정보를 얻을 수 있습니다.
flatMap
flatMap 오퍼레이터는 각 이벤트에 대해 새로운 Observable을 생성하고, 이 Observable들의 결과를 평탄화하여 하나의 Observable로 만들어줍니다. 복잡한 비동기 작업을 처리할 때 유용하죠!
let numbers = Observable.of(1, 2, 3)
let flatMapped = numbers.flatMap { num in
return Observable.of(num, num * 2, num * 3)
}
flatMapped.subscribe(onNext: { print($0) })
// 1, 2, 3, 2, 4, 6, 3, 6, 9
여기서는 각 숫자에 대해 여러 값을 생성하여 평탄화했습니다.
이렇게 공식문서를 바탕으로 공부한 내용들을 정리해 보았습니다. 피드백은 언제든지 환영입니다!!
'iOS > RxSwift' 카테고리의 다른 글
| [RxSwift / RxAlamofire] 네트워크 모듈 만들기 (0) | 2024.12.20 |
|---|---|
| [RxSwift] 2. Disposing (0) | 2024.12.20 |
| [RxSwift] 1. Observables aka Sequences (0) | 2024.12.20 |
| [RxSwift] From / Just / Of / Repeat / Interval / Timer / Range (0) | 2024.12.20 |
| [RxSwift] Empty / Never / Throw (0) | 2024.12.20 |