본문 바로가기

iOS/학습정리

iOS) RxSwift 가볍게 훑어보기 (3) just, of, from

Observable 생성 연산자

just

하나의 항목을 방출하는 Observable 생성

ObservableType 프로토콜의 Type Method이다.
just로 생성한 Observable은 파라미터로 전달한 요소를 그대로 방출한다.

let disposeBag = DisposeBag()
let element = "🌝"

Observable.just(element)
    .subscribe { event in print(event) }
    .disposed(by: disposeBag)

Observable.just([1, 2, 3])
    .subscribe { event in print(event) }
    .disposed(by: disposeBag)

위 코드를 실행하면 다음과 같이 나온다.

next(🌝)
completed
next([1, 2, 3])
completed

배열로 들어간 값들이 각각 전달되는게 아니고 한 번에 전달되는 것을 알 수 있다.

of

두 개 이상의 요소를 방출하는 Observable을 만들기 위해서 사용한다.

파라미터가 가변 파라미터로 선언되어 있어 여러 개의 값을 동시에 전달할 수 있다. of 연산자 역시 ObservableType 프로토콜의 Type Method이다.

let disposeBag = DisposeBag()
let apple = "🍎"
let orange = "🍊"
let kiwi = "🥝"

Observable.of(apple, orange, kiwi)
    .subscribe { element in print(element) }
    .disposed(by: disposeBag)
next(🍎)
next(🍊)
next(🥝)
completed

그렇다면 배열은 어떻게 처리될까?

Observable.of([1, 2], [3, 4], [5, 6])
    .subscribe { element in print(element) }
    .disposed(by: disposeBag)
next([1, 2])
next([3, 4])
next([5, 6])
completed

배열은 just처럼 그대로 인식하여 통으로 출력된다.

from

전달된 배열이 각각 처리되도록 하기 위해 사용한다.

let disposeBag = DisposeBag()
let fruits = ["🍎", "🍊", "🥝", "🍒", "🍇"]

Observable.from(fruits)
    .subscribe { element in print(element) }
    .disposed(by: disposeBag)
next(🍎)
next(🍊)
next(🥝)
next(🍒)
next(🍇)
completed

정리

just 하나의 요소를 방출해야 할 때 사용

of 두 개 이상의 요소를 방출해야 할 때 사용

from 배열에 저장된 요소를 순서대로 하나씩 방출해야 할 때 사용

참고