/MovieApp

네이버 영화 API를 활용한 영화 검색 앱

Primary LanguageSwift

MovieApp

네이버 영화 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

ViewController 흐름

프로젝트 구조

MVVM 구조를 채택해 Viewmodel이 소유하는 영화 모델이 변경되면 View 업데이트

주요 객체 역할

객체 역할
MainViewController 영화 검색 결과 목록 표시
MainViewModel usecase에 검색 쿼리 요청, 즐겨찾기 추가 및 삭제
MovieUsecase repository에 검색 결과 요청
MovieRepository MovieResponse -> Movie 객체로 변환
TransferService에 MovieResponse 요청
TransferService Data -> MovieResponse 객체로 변환
NetworkAPI Data 요청
ImageDownloadManager 이미지 다운로드, 이미지 캐시, 이미지 다운로드 취소
FavoriteManager UserDefaults를 사용해 즐겨찾기 관리
MovieCollectionView 영화 목록, 즐겨찾기 화면에서 CollectionView 재사용
Observable 데이터 바인딩