네이버 영화 API를 이용해 영화 검색 구현하기
영화 제목으로 검색 가능 및 빈문자열 또는 결과가 없을 경우에 검색 결과 없음 표시
화면 |
---|
WKWebView를 사용해 내용 상세화면 표시 및 즐겨찾기 추가,삭제 기능
화면 |
---|
UserDefaults를 사용해 즐겨찾기 영화를 저장, 상세화면으로 이동
화면 |
---|
🗂 Presentation
- ViewController.swift
- ViewModel.swift
🗂 Views
- MovieCollecitonView.swift
- MovieCell.swift
🗂 Common
- Observable.swift
🗂 Domain
- Usecase.swift
- Movie.swift
🗂 Infra
- Repository.swift
- TransferService.swift
- NetworkService.swift
- MovieResponse.swift
- MovieEndpoint.swift
- ImageCache.swift
- ImaageDownloadManaer.swift
- FavoriteManager.swift
Info.plist
MVVM 구조를 채택해 Viewmodel이 소유하는 영화 모델이 변경되면 View 업데이트
객체 | 역할 |
---|---|
MainViewController | 영화 검색 결과 목록 표시 |
MainViewModel | usecase에 검색 쿼리 요청, 즐겨찾기 추가 및 삭제 |
MovieUsecase | repository에 검색 결과 요청 |
MovieRepository | MovieResponse -> Movie 객체로 변환 TransferService에 MovieResponse 요청 |
TransferService | Data -> MovieResponse 객체로 변환 NetworkAPI Data 요청 |
ImageDownloadManager | 이미지 다운로드, 이미지 캐시, 이미지 다운로드 취소 |
FavoriteManager | UserDefaults를 사용해 즐겨찾기 관리 |
MovieCollectionView | 영화 목록, 즐겨찾기 화면에서 CollectionView 재사용 |
Observable | 데이터 바인딩 |