소개 : 박스오피스 순위를 소개하는 앱입니다.
프로젝트 기간 : 2022.01.02 ~ 2022.01.06
| 엘렌 | 우롱차 |
|---|---|
![]() |
- API 관리 및 네트워킹 객체 구현
- MVVM 구조 설계
- 메인 화면 구현
- 영화 상세 화면 구현
- Firebase 구현
- 리뷰 작성 화면 구현
- 리뷰 리스트 화면 구현
| 메인 화면 | 상세 화면 | 리뷰 화면 |
|---|---|---|
![]() |
![]() |
![]() |
- Entry: AppDelegate과 SceneDelegate이 있습니다.
- Model: 네트워킹, 파이어베이스에 사용되는 모델입니다.
- Network: API, REST, FierBase의 CRUD 로직을 포함합니다.
- Domain: 화면 별 구현사항을 포함합니다.
- Extension: 커스텀한 Extension의 집합입니다.
- SupportFile: Assets, plist파일 등이 있습니다.
내부 로직이 혼잡해지는 것을 방지하고자 로직의 흐름을 input과 output 처럼 단방향으로 제한했습니다. 이러한 형태를 ViewModelInterface로 추상화하였습니다. ViewController에서 추상화 된 ViewModelInterface와 ViewModel의 Newtork객체 모두 의존성주입 형태로 초기화하며 이러한 구조는 테스트 코드 작성에도 용이합니다.
비동기 로직을 Combine을 사용하여 구현하였습니다. 하나의 API만이 아닌 여러 API에도 사용가능하게 구현하였습니다. 셀의 갯수 당 세번씩 request를 해야하는데 이 점을 Combine의 Sequence를 사용해 구현하였습니다.
요구사항에는 FireStorage를 사용하라고 명시되어있으나 사용에 참고하라는 링크는 FireStore 여서 혼동을 많이했습니다. 원래 계획은 FireStore에 정보를 저장하고 이미지와 같은 큰 크기의 파일만 파이어Storage에 저장할 생각이였으나 FireStore에만 사용해야된다는 조건으로 큰크기의 이미지파일의 크기를 줄이고 인코딩하여 String으로 저장하였습니다.







