Skip to content

Jin0Yun/ios-box-office

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

박스오피스 프로젝트

일별 박스오피스 정보 및 영화 상세정보를 확인할 수 있는 앱

프로젝트기간: 2024.02.13 ~ 2024.03.15 (6주간)

목차

  1. 프로젝트 목표
  2. 개발환경 및 활용한 기술
  3. 프로젝트 구조
  4. 스크린샷
  5. 학습 내용
  6. PR Point
  7. Trouble Shooting
  8. 팀원소개

프로젝트 목표

  • Clean Architecture + MVVM 학습 및 적용
  • HTTP 통신을 처리할 수 있는 네트워크 모듈 생성
  • Swift Concurrency 학습 및 적용

개발환경 및 활용한 기술

개발언어 및 환경 협업도구 기술스택
Swift Notion SwiftLint
UIKit Github MVVM
Xcode 17.0 Discord Input-Output
Navigator
Observable
Completion Handler → Swift Concurrency
TDD

프로젝트 구조

Clean Architecture + MVVM

  • Presentaion: View, ViewModel
  • Domain: Entity, Use Case, Repository Interface
  • Data: Repository
  • 의존성의 방향이 안쪽 방향으로만(Domain) 향하게 하고 안쪽에서 바깥 방향으로는 의존하지 않는 구조
스크린샷 2024-05-14 오후 8 11 23

스크린샷

박스오피스 CollectionView RefreshController 기능설명
일별 박스오피스
CollectionView로 일별 박스오피스 리스트로 구현했습니다.

RefreshController
로드 중임을 알 수 있게 하기위해 당겨서 새로고침을 구현했습니다.

Image Cache 전 Image Cache 후 기능설명
영화 상세화면
CollectionView로 영화 상세정보를 구현했습니다.

Indicator
이미지가 로득되기 전에 이미지가 로드중임을 알 수 있도록 indicator를 구현했습니다.

Image caching
한 번 로드된 이미지는 캐시를 통해 빠르게 로드될 수 있도록 구현했습니다.

학습 내용

Navigator + Depengency Manager

  • VC간의 결합도를 줄이고 응집도를 높이기 위한 라우팅 객체(Navigator)와 의존성 주입을 위한 객체(Depengency Manager)

디자인패턴 적용 - 옵저버 패턴

  • Observable을 활용한 옵저버 패턴 적용(ViewControllerViewModel)
  • 데이터 바인딩을 통한 반응형 프로그래밍 구현

네트워크 모듈

  • 다양한 형태의 RequestResponse를 처리할 수 있는 네트워크 모듈
  • 하나의 모듈로 다양한 API 가능

Cache

  • 네트워크 통신을 통해 불러온 이미지 캐싱
  • NSCache

CollectionView

  • CollectionView를 활용한 영화 목록 및 상세 정보 UI 구현
  • UIActivityIndicatorViewUIRefreshControl를 활용해 로드 중 및 새로고침 UI 구현

Migration

  • ViewModel → ViewModel with InputOutput Pattern - 양방향 바인딩
  • 비동기 처리 마이그레이션(Completion HandlerSwift Concurrency)

PR Point

팀원소개

윤진영(yuni) 장우석(sidi)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Swift 100.0%