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, ๋ฉ์ธ ์ค๋ ๋์์ ์ฒ๋ฆฌ๋๋ ํน์ง์์.