MVVM with RxSwift - kirseia/study GitHub Wiki

구조

VC  - 소유 -> View Model - 소유 -> Model 
       - 바인딩 -                   <- noti 
  • ViewModel 생성자로 Model 을 넣어준다.
  • ViewModel 은 input / output 으로 구분

ViewModel

  • Input 은 -> user action 으로 들어오는 값, Observer (View의 TextField, Button 등이 -> subscribe(input) 형태)
  • Output 은 화면 업데이트를 위해 사용되는 값, Observable (View에서 Output.subscribe(...) 형태)

VC

  • viewModel의 observable (output)을 label / view 등에 bind 한다.

  • viewModel output 이 바뀌면 자동으로 업데이트 되도록.

  • Button 등 액션을 bind 한다.

  • 액션이 이뤄지면 viewmodel의 명령어를 수행해서 view model / model 을 업데이트 한다.

정리?

  • RxRelay를 사용하면 BehaviorRelay(최초 값을 갖는)과 PublishRelay 를 사용할 수 있음
  • error와 completed 를 발생하지 않음.
  • Driver 는 RxCocoa로 제공된 UI 조작 특화 Observable, 메인 스레드에서 처리되는 특징있음.

Ref.