apple/RxSwift, ReactorKit

RxSwift 스터디 1주차 Hello RxSwift

lgvv 2021. 7. 7. 18:03

RxSwift 스터디 1주차 Hello RxSwift

이전에 4시간짜리 강의로 빠르게 스키밍했다면 이번에는 RxSwift에 대해서 차근차근 학습.

해당 커리큘럼은 SOPT 동아리에서 오픈소스 공간에 있는 순서에 따라 공식문서인 ReactiveX.io를 기반으로 진행

 

공식문서 및 커리큘럼 링크는 본문 제일 하단에 위치

 

목차

1. Observer 및 Operator

2. 개념에서 몇가지 주의사항

 

 

1. Observer 및 Operator

아래 ViewDidLoad에서 작성된 코드를 확인.

 

`.tap`과 같은건 RxCocoa에 있는 부분으로 UIControl에 대해서 이벤트를 관찰할 수 있음.

subscribe에서는 이벤트가 방출되면 여기서 로직을 처리.

 

override func viewDidLoad() {
    super.viewDidLoad()
    
    setupUI()
    
    button.rx.tap
        .subscribe(onNext: { [weak self] next in
            guard let self else { return }
            self.textField.text = "" // tap시 textField를 초기화
        }).disposed(by: disposeBag)
    
    
    textField.rx.text
        .filter { [weak self] text in
            guard let self else { return }
            if text == "appear" {
                self.button.isHidden = false
                return false
            } else if text == "disappear" {
                self.button.isHidden = true
                return false
            } else {
                return true
            }
        }.subscribe(onNext: { text in
            print(text ?? "")
        })
    
    toggleSwitch.rx.isOn
        .subscribe(onNext: { enabled in
            print(enabled ? "It's ON" : "It's OFF")
        }).disposed(by: disposeBag)
}

 

 

 

 

2. 개념에서 몇가지 주의사항

 

finite observable sequences vs Infinite observable sequences

 - Finite observable sequences (서버 통신과 같이 한정되어 있는 경우)

 - Infinite observable sequences (UIcomponent와 같이 끝이 없이 이어지는 경우)

 

즉, Infinite는 무한히 캡처링이 가능하고 따라서 Error나 Complete가 발생하지 않기 때문에 생략 가능.

설명!

 

 

 

 

 

RxSwift로 실행 결과 콘솔에 찍어보기

 

실시간으로 입력마다 이벤트를 확인할 수 있음.

기존에도 Delegate를 채택해서 이벤트를 처리하곤 했지만, RxSwift를 사용하면 매우 간편하게 처리할 수 있음.

 

실시간으로 반응을 하네?!

 

 

 

 

 

(참고)

http://reactivex.io/

https://github.com/5anniversary/RxSwiftStudy