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, 메인 스레드에서 처리되는 특징있음.