안녕하세요, iOS 개발하는 루피입니다.
오늘은 공식문서를 바탕으로 Operator를 정리해보려 합니다. 자 그럼 시작해 보겠습니다!!
From : 오직 하나의 배열을 받고, 배열의 원소들을 순서대로 방출하는 Observable로 변환하다.

코드로 보면…
let disposeBag = DisposeBag()
// 여러 개의 객체를 하나의 Observable로 생성
let numbers = [1, 2, 3, 4, 5]
let observable = Observable.from(numbers)
// 구독을 통해 이벤트 수신
observable.subscribe(
onNext: { number in
print("Received number: \(number)")
},
onCompleted: {
print("Completed")
}
).disposed(by: disposeBag)
// Received number: 1
// Received number: 2
// Received number: 3
// Received number: 4
// Received number: 5
// Completed
Just : 단 하나의 특정한 아이템을 방출하는 Observable을 만든다.
Just 연산자는 하나의 아이템을 Observable로 변환하여 해당 아이템을 발행합니다. Just는 From과 유사하지만, From은 배열이나 반복 가능한 객체를 전달받으면 그 내부의 아이템들을 각각 발행하는 반면, Just는 배열이나 반복 가능한 객체를 그대로 하나의 아이템으로 발행합니다.

코드로 보면…
let source = Observable.just(1, 2, 3)
source.subscribe {
print($0)
}
let source2 = Observable.just([1,2,3])
source2.subscribe {
print($0)
}
// next((1, 2, 3))
// completed
// next([1, 2, 3])
// completed
Of : 1개 이상의 아이템을 방출하는 Observable을 만듭니다.
코드로 보면 ...
let observable = Observable.of(1, 2, 3)
Observable.subscribe {
print($0)
}
// 1
// 2
// 3
// onComplete
// onDispose
Repeat : 특정한 아이템을 여러 번 방출하는 Observable을 만듭니다.

코드로 보면 …
let disposeBag = DisposeBag()
// 동일한 아이템을 5번 반복해서 발행하는 Observable 생성
let repeatObservable = Observable.repeatElement("Hello, RxSwift!").take(3)
// Observable 구독
repeatObservable.subscribe(onNext: { value in
print("Received value: \(value)")
}).disposed(by: disposeBag)
// Received value: Hello, RxSwift!
// Received value: Hello, RxSwift!
// Received value: Hello, RxSwift!
Interval : 지정된 시간 간격으로 정수 시퀀스를 방출하는 Observable을 생성합니다.

let disposeBag = DisposeBag()
// 1초 간격으로 정수 시퀀스를 발행하는 Observable 생성
let observable = Observable<Int>.interval(.seconds(1), scheduler: MainScheduler.instance)
// Observable 구독
observable.subscribe(onNext: { value in
print("Received value: \(value)")
}).disposed(by: disposeBag)
// Received value: 0
// Received value: 1
// Received value: 2
// Received value: 3
...
Timer : 정해진 지연 이후에 특정 아이템을 방출하는 Observable을 생성합니다.

코드로 보면…
// 1초 후에 아이템을 발행하고, 이후 매 2초마다 발행하는 Observable 생성
let timerObservable = Observable<Int>.timer(.seconds(1), period: .seconds(2), scheduler: MainScheduler.instance)
// Observable 구독
timerObservable.subscribe(onNext: { value in
print("Received value: \(value)")
}).disposed(by: disposeBag)
// Received value: 0
// (2초 후)
// Received value: 1
// (2초 후)
// Received value: 2
// ...
Range : 지정된 범위의 연속된 정수 시퀀스를 발행하는 Observable을 생성합니다.

코드로 보면…
let disposeBag = DisposeBag()
// 1부터 10까지의 정수 시퀀스를 발행하는 Observable 생성
let observable = Observable<Int>.range(start: 1, count: 3)
// Observable 구독
observable.subscribe(onNext: { value in
print("Received value: \(value)")
}).disposed(by: disposeBag)
// Received value: 1
// Received value: 2
// Received value: 3
이처럼 학습한 내용들을 정리해 보았습니다. 피드백은 언제든지 환영입니다!!
'iOS > RxSwift' 카테고리의 다른 글
| [RxSwift] 2. Disposing (0) | 2024.12.20 |
|---|---|
| [RxSwift] 1. Observables aka Sequences (0) | 2024.12.20 |
| [RxSwift] Empty / Never / Throw (0) | 2024.12.20 |
| [RxSwift] Create / Defer (1) | 2024.12.20 |
| [RxSwift] Map / FlatMap (0) | 2024.12.20 |