관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS] 3. Clean Architecture + MVVM 개념 확실하게 이해하기 (Actor가 Entity를 받기까지) 본문

Architecture (swift)/MVVM (개념)

[iOS] 3. Clean Architecture + MVVM 개념 확실하게 이해하기 (Actor가 Entity를 받기까지)

jake-kim 2021. 8. 18. 01:19

Actor가 Entity를 받기까지

  • View는 ViewModel의 메소드를 호출
  • viewModel은 useCase 실행 > useCase는 Repository(DB or Network)에 데이터 요청
  • Repository에서 cache에 데이터가 있으면 바로 획득, 없으면 memory cache, disk cache로 기록
  • Respository로 부터 받은 데이터는 completion의 인수로 받을수 있어서 ViewModel이 이 데이터 획득
  • ViewModel은 자신의 Output 프로퍼티에 emit > 이 프로퍼티를 observe하고있던 View에서 Entity를 UI에 표출

예제 - Actor가 MovieList Entity를 요구

  • View는 ViewModel의 메소드를 호출

View는 ViewModel을 가지고 있는 형태
검색어를 입력하면 viewModel의 메소드 호출

  • viewModel은 useCase 실행 > useCase는 Repository(DB or Network)로 부터 데이터를 조합

ViewModel은 useCase를 가지고 있는 형태
viewModel의 didSearch
didSearch로 부터 불린 update
update로 부터 불린 load에서 useCase 사용하여 데이터 획득
useCase는 Repository에 접근하여 데이터 요청

  • Repository에서 cache에 데이터가 있으면 바로 획득, 없으면 memory cache, disk cache로 기록 (아래에선 disk cache 사용)

cache로 부터 데이터를 가져오고 성공 시 그 데이터 사용, 실패 시 API 호출 > 성공 시 cache에 결과값 저장

  • ViewModel은 자신의 Output 프로퍼티에 emit > 이 프로퍼티를 observe하고있던 View에서 Entity를 UI에 표출

데이터 획득: Repository > UseCase > ViewModel
얻어온 entity값을items에 emit
observe하고 있던 view에서 해당 entity를 UI 표출

* 참고

- https://eunjin3786.tistory.com/207

- https://tech.olx.com/clean-architecture-and-mvvm-on-ios-c9d167d9f5b3

Comments