[iOS] - RxSwift Observable

PM077·2022년 12월 25일
0

iOS

목록 보기
8/21

RxSwift it is hard because of the sequence
RxSwift가 어려운 점은 Observable=Sequence 가 어려운 것이다

Observable

앞서 RxSwift는 비동기 이벤트들을 쉽게 관리해주는 도구라고 설명을 했다. Observable은 관찰이 가능하도록 일련의 순서로 넣어서 신호를 emit(방출)하는 것이 기본 원리이다.

그러면 Observable에 대한 간단한 생명주기를 알아보겠다

  1. 우선 Observable 객체를 선언하고 데이터 들을 입력 받습니다 (just, of, from)
  2. Observable 객체를 구독시작합니다 (subscribe)
  3. Observable내의 구성요소를 next이벤트로 계속 방출합니다
  4. Error 이벤트 방출로 observable이 종료되거나 complete 이벤트 방출로 종료 될 수 있습니다
  5. 이 후 dispose로 구독 취소를 해서 메모리를 해제 시켜줍니다

사용 예시

밑에 예시는 간단히 Observable을 단계별로 따로 구현해본 방법이다.

import UIKit
import RxSwift
//1. observable 선언 방법
let observable = Observable.just(1) //한 값만 받기
let observable2 = Observable.of(1,2,3) //여러 값 받기
let observable3 = Observable.of([1,2,3]) //이는 배열 통으로 받기
let observable4 = Observable.from([1,2,3,4,5]) // 배열만 받으며 배열 내의 한 값씩 return

//2. Observable 구독 방법
observable4.subscribe{event in
    if let element = event.element{
        print(element)
    }
}
//2.1. Observable 구독 방법(onNext 활용)
let subscription4 = observable4.subscribe(onNext: {element in
    print(element)
})

// 5. dispose 방법
subscription4.dispose()

실전 사용 예시

밑에 예시는 한 번에 이어서 사용된 것이다. 첫 번째 예시는 주로 사용되는 예제이며 두번째는 하나씩 다 지정해줄 때 사용해주는 예시라고 보면 된다.

import UIKit
import RxSwift

let disposeBag = DisposeBag()
// 1. 첫번째 예시
Observable.of("A", "B", "C").subscribe{
    print($0)
}.disposed(by: disposeBag)

//2. 두번째 예시
Observable<String>.create{
    observer in
    
    observer.onNext("A")
    observer.onCompleted()
    observer.onNext("?")
    return Disposables.create()
}.subscribe(onNext: {print($0)}, onError: {print($0)}, onCompleted: {print("Completed")}, onDisposed: {print("Disposed")}).disposed(by: disposeBag)
profile
PM/PO

0개의 댓글