ππ»ββοΈ νλ‘μ νΈ μκ°
μν°λ νλ¦¬μ¨ λ³΄λ© BoxOffice
μ± νλ‘μ νΈ μ
λλ€.
νλ‘μ νΈ κΈ°κ°: 2023-01-02 ~ 2022-01-06 (5μΌ)
νμ: Judy, μ‘λΉ
π§π»βπ»π§π»βπ» κ°λ°μ μκ°
Judy |
μ‘λΉ |
|
|
Firestore ,리뷰νλ©΄ , μμΈνλ©΄ |
async-await , API , ννλ©΄ |
-
APIKey μνΈν
- API keyκ° κ³΅κ° Repositoryμ λ
ΈμΆλμ§ μλλ‘ plistλ‘ κ΄λ¦¬νμμ΅λλ€.
- omdb_API_KEY : 112af520
- kobis_API_KEY : 6f25ceb4b995518d987d1f003e84fae7
- μ μ¬μ§μ²λΌ MovieInfo νμΌμ λκ°μ ν€λ₯Ό κΈ°μ
ν΄μ£Όμ
μΌ APIκ° λμν©λλ€
-
MVVM
- λ°μ΄ν° κ΄λ ¨ λ‘μ§μ ViewModel, λ·°μ μν κ΄λ¦¬λ ViewContoller, λ·°μ λ‘μ§μ Viewλ‘ MVVM ν¨ν΄μ μ¬μ©ν΄ μ΄λ² νλ‘μ νΈλ₯Ό μ§νν΄ λ³΄μμ΅λλ€.
-
λμμΈν¨ν΄
- μ΅μ λ²λΈ ν¨ν΄
- MVVM ꡬνμ λ°μ΄ν° λ°μΈλ©μ μν΄ μ΅μ λ²λΈ ν¨ν΄μΌλ‘ ꡬνμ ν΄λ³΄μμ΅λλ€.
- μ±κΈν€ ν¨ν΄
- λ°μ΄ν°λ² μ΄μ€λ‘ μ¬μ©νλ FirestoreManager ꡬν μ νλμ μΈμ€ν΄μ€λ₯Ό μ μ§νκΈ° μν΄ μ±κΈν€ ν¨ν΄μ μ μ©νμ΅λλ€.
-
UI ꡬν
- μ½λ λ² μ΄μ€ UI
- μ€ν λ μ΄μμ
- νΌκ·Έλ§ νλ‘ν νμ
-
λ°μ΄ν°λ² μ΄μ€
-
λΉλκΈ°μ²λ¦¬
μΌλ³ λ°μ€μ€νΌμ€ νλ©΄ |
μ£Όκ°/μ£Όλ§ λ°μ€μ€νΌμ€ νλ©΄ |
λ μ§ μ ν |
|
|
|
μμΈνλ©΄ + 리뷰νλ©΄
μμΈνλ©΄ + μΆμ°μ§ λ보기 |
리뷰 μ°κΈ° |
리뷰보기 λ° μμ |
|
|
|
.
βββ APIs
β βββ SearchDailyBoxOfficeListAPI.swift
β βββ SearchMovieInfoAPI.swift
β βββ SearchMoviePosterAPI.swift
β βββ SearchWeeklyBoxOfficeListAPI.swift
βββ Application
β βββ AppDelegate.swift
β βββ SceneDelegate.swift
βββ Domain
β βββ Entities
β β βββ MovieData.swift
β β βββ Review.swift
β βββ UseCase
β βββ MovieAPIUseCase.swift
β βββ ReviewFirebaseUseCase.swift
βββ GoogleService-Info.plist
βββ Info.plist
βββ MovieInfo.plist
βββ Resource
β βββ Assets.xcassets
β β βββ AccentColor.colorset
β β β βββ Contents.json
β β βββ AppIcon.appiconset
β β β βββ Contents.json
β β βββ Contents.json
β βββ Base.lproj
β βββ LaunchScreen.storyboard
βββ Scene
β βββ HomeScene
β β βββ CalendarModalView
β β β βββ CalendarPresentationController.swift
β β β βββ CalendarTransitioningDelegate.swift
β β β βββ CalendarViewController.swift
β β βββ HomeViewController.swift
β β βββ HomeViewModel.swift
β β βββ ModeSelectModalView
β β β βββ ModeSelectCell.swift
β β β βββ ModeSelectPresentationController.swift
β β β βββ ModeSelectTransitioningDelegate.swift
β β β βββ ModeSelectViewController.swift
β β βββ SubViews
β β βββ GridCell.swift
β β βββ HeaderView.swift
β β βββ HomeCollectionView.swift
β β βββ ListCell.swift
β βββ MovieDetailScene
β β βββ ActorListModalView
β β β βββ ActorListPresentationController.swift
β β β βββ ActorListTransitioningDelegate.swift
β β β βββ ActorListViewController.swift
β β βββ MovieDetailViewController.swift
β β βββ SubViews
β β β βββ MovieButton.swift
β β β βββ MovieLabel.swift
β β β βββ MovieMainInfoView.swift
β β β βββ MovieReviewView.swift
β β β βββ MovieSubInfoView.swift
β β β βββ ReviewTableViewCell.swift
β β βββ UIViewController+.swift
β βββ ReviewScene
β βββ MovieReviewViewModel.swift
β βββ ReviewListViewController.swift
β βββ WriteReviewViewController.swift
βββ Service
β βββ Firebase
β β βββ FirebaseError.swift
β β βββ FirestoreManager.swift
β β βββ StorageManager.swift
β βββ Network
β βββ API.swift
β βββ APIClient.swift
β βββ APIConfiguration.swift
β βββ APIError.swift
β βββ Extension
β βββ Bundle+Extension.swift
β βββ Date+Extension.swift
β βββ Dictionary+Extension.swift
βββ Utility
βββ ImageCache
β βββ ImageCacheManager.swift
βββ Observable
β βββ Observable.swift
βββ StarRating
βββ StarRatingView.swift
βββ SubViews
βββ StarImageView.swift
βββ StarRatingUISlider.swift
β
CollectionView Compositional Layout
μΉμ
λ³λ‘ λ°μ΄ν°λ₯Ό μ μ°νκ² μ²λ¦¬νκΈ° μν΄ Compositional Layoutμ μ¬μ©νμμ΅λλ€.
`보기λͺ¨λ λ³κ²½ λ²νΌ(μλ¨ λ²νΌ)`, `μΊλ¦°λ λ²νΌ`, `μΆμ°μ§ λ보기 λ²νΌ` μ Custom Modal νμμΌλ‘
ꡬνμ νμ΅λλ€.
API μμ²μ΄ 3λ² μ°μλμ΄ @escaping ν΄λ‘μ λ‘ μ²λ¦¬νκ² λ μ 볡μ‘ν μ½λλ‘ μΈν΄ κ°λ
μ±μ΄ λ¨μ΄μ§κ³
νμ
νλ νμ λν μ½λλ₯Ό μ΄ν΄νκΈ° μ΄λ €μ΄ μν©μ΄ μμμ΅λλ€. async-await μ²λ¦¬λ‘ μΈν΄ λ€μ¬μ°κΈ° λ¬Έλ²μ
μ΅λν λ°°μ νκ³ , κ°λ
μ±μ μ¬λ € νμκ³Ό νμ
νκΈ° μ’μ μ½λλ‘ λ³κ²½ νμμ΅λλ€.
리뷰λ₯Ό μ μ₯νκΈ° μν΄ Firebaseμ Firestoreλ₯Ό μ¬μ©νμ΅λλ€. 리뷰 κ°μ λ
립μ±μ μν΄ μν λ³λ‘
`λλ€μ+μνΈ`λ₯Ό νμΌ μ΄λ¦μΌλ‘ μ μ₯νμ΅λλ€. Firestoreμ μ¬μ©μ λλ `FirestoreManager`κ°μ²΄κ° μκ³ ,
ν΄λΉ κ°μ²΄λ₯Ό `Review`λ‘ μ§μ μ¬μ©νλ `ReviewFiresoterUseCase` κ°μ²΄λ‘ κ³μΈ΅μ λΆλ¦¬νμ΅λλ€
리뷰 ν
μ΄λΈ λ·° μ
λμ ν¬κΈ° μ‘°μ
- νμ¬ λ¦¬λ·°μ κΈ΄ κΈμ μ μμ κ²½μ° λλ¨Έμ§ κΈμκ°
...
λ‘ μλ¦¬κ³ μμ΅λλ€. 리뷰 리μ€νΈλ₯Ό 보μ¬μ£Όλ νλ©΄μμ μ
μ ν¬κΈ°λ₯Ό λ€μ΄λλ―Ήνκ² μ‘°μ νλ κΈ°λ₯μ μμ§ λ£μ§ λͺ»νμ΅λλ€.
- νμ¬ λ¦¬λ·° μ΄λ―Έμ§λ₯Ό μ νν μ μμ§λ§ μ μ₯νμ§ μκ³ κΈ°λ³Έ μ΄λ―Έμ§λ§ λμ°κ³ μμ΅λλ€. FireStorageλ₯Ό μ¬μ©νλ € ꡬνκΉμ§ ν΄λ¨μ§λ§, Firestoreλ§ μ¬μ©νλ μꡬμ¬νμ λ°λΌ
UIImage
λ₯Ό base64
λ‘ String
μΌλ‘ μ νν ν λ°°μ΄ ννλ‘ Firestoreμ μ μ₯νλ©΄ λ κ² κ°μ΅λλ€.