Swift/UIKit

[UIKit] Combine 사용해서 MVVM 구현해보기 : code 읽어보자

insub4067 2022. 7. 30. 01:39

Controller의 code이다 

viewModel을 init 해주고 있으며 내부의 instance method인 viewDidLoad를 호출한다

setupViewModel이 호출되면 이런 내용이 실행된다

대충 읽어 보면 viewModel의 ObservableProperty이 people를 계속해서 읽는데,

.receive될 경우 == 값이 변하면 main에서 스케쥴링한다 == 일빠따로 처리해라

.sink는 값이 새로 들어왔을때 뭘할지 후행 closure로 처리해준다 데이터 후처리이다

보면 알겠지만 뷰 새로 그려준다

 

근데 여기서 의문인데 이름이 바뀐게 아닌가 싶다

.sink를 .onRecieve 라고 했다면 더 직관적인거 아닌가?

 

그리고 .receive는 .schedule(on: ) 이라고 했으면 더 직관적인거 아닌가?

 

.store은 cancle 됐을때 실행되는거 같은데 대충 그런갑다 하고 나중에 공부해야지 하핫

viewModel의 method들이다 data를 가지고 오기 위해 data를 fetch 한다

fetch는 이렇게 이루어 진다

비동기로 getPeople이라는 함수를 통해 urlRequest한다

대충 이렇게 생겼는데 비동기로 어쩌구해서 People.results 돌려주는데

그냥 [Person] Person이라는 Type의 array이다 

 

GitHub - unnnyong/AsyncAwaitSample: Swift의 async/await를 사용하는 샘플 프로젝트입니다.

Swift의 async/await를 사용하는 샘플 프로젝트입니다. Contribute to unnnyong/AsyncAwaitSample development by creating an account on GitHub.

github.com