본문 바로가기
iOS/RxSwift

[RxSwift] Create Operators [1]

by 최지철 2023. 10. 29.
728x90
반응형

just, of, from

  • just : 하나의 항목을 방출하는 Observable을 생성
    • ObservableTypeProtocol에 타입메서드로 선언되어있다.
    • 파라미터로 하나의 요소를 받고 Observable로 리턴
    • 파라미터로 전달된 요소를 그대로 방출!
let element = "jife"

Observable.just(element)
	.subcribe { event in print(event) }
    .disposed( by: disposebag)
    
    //next(jife)
    //completed
    //출력값
    
Observable.just([1,2,3])
	.subcribe { event in print(event) }
    .disposed( by: disposebag)
    //next([1,2,3])
    //completed
  • of : 2개이상의 값을 파라미터로 전달할 수 있다.
    • 가변 파라미터로 전달 할 수 있다.
    • 타입메서드로 선언되어있다.
Observable.of(kiwi, apple, orange)
	.subcribe { elemnet in print(elemnet) }
    .disposed( by: disposebag)
    
    //next(kiwi)
    //next(apple)
    //next(orange)
    //completed
    //출력값
    
Observable.of([1,2], [2,3,4])
	.subcribe { elemnet in print(elemnet) }
    .disposed( by: disposebag)
    
    //next([1,2])
    //next([2,3,4])
    //completed
    //출력값
  • from : 배열에 저장된 요소를 하나씩 방출하고 싶을때, 사용
Observable.from([1,2,3,4])
	.subcribe { elemnet in print(elemnet) }
    .disposed( by: disposebag)
    
    //next(1)
    //next(2)
    //next(3)
    //next(4)
    //completed
    //출력값

range, generate

  • 정수를 지정된 수만큼 방출하는 옵저버블을 생성하는 연산자

range 

  • 시작값에서 1씩 증가하는 시퀀스를 생성
  • 감소하거나 변경은 불가하다
Observable.range(start:1, count:4)
	.subcribe { print($0) }
    .disposed( by: disposebag)
    
    //next(1)
    //next(2)
    //next(3)
    //next(4)
    //completed
    //출력값

generate 

  1. initialState : 초기 상태
  2. condition : 현재 상태를 검사하여, true를 반환하면 Observable 을 진행시키고, false를 반환하면 Observable을 종료
  3. scheduler : 어떤 scheduler에서 실행시킬 지 선택. 기본 값은 현재 스레드
  4. iterate : 이벤트를 발생시킨 후 매번 실행되는 명령
  • range와 달리 파라미터 형식이 정수로 제한되지 않는다.
Observable.generate(initialState: 0,
                    condition: { $0 < 10},
                    iterate: { $0+1 })
    .subscribe { event in
        switch event {
        case let .next(value):
            print(value)
        default:
            print("finished")
        }
        
    }.disposed(by: bag)
// 0
// 1
// 2
// 3
// 4
// 5
// 6
// 7
// 8
// 9
// finished
728x90
반응형

'iOS > RxSwift' 카테고리의 다른 글

[RxSwift] Erro 처리 catch, retry 연산자  (0) 2023.10.31
[RxSwift] Create Operators [2]  (0) 2023.10.30
[RxSwift] Relay  (1) 2023.10.29
[RxSwift] Subject  (0) 2023.10.29
[RxSwift] Disposable  (0) 2023.09.14