Skip to content

yuzzin0121/FilmRoad

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 

Repository files navigation

FilmRoad

FilmRoad는 요즘 인기있는 TV 프로그램 탐색, 검색, 저장할 수 있는 TV 프로그램 탐색 앱입니다.


프로젝트 개발 및 환경

  • iOS 1인 개발
  • 개발 기간: 1주 (2024.06.17 ~ 2024.06.25)
  • 환경: 최소 버전 16.0 / 세로 모드 / 아이폰용

핵심 기능

  • TV 프로그램 탐색 | 이번주 유행하는 TV 프로그램 / 가장 인기 있는 TV 프로그램 / 요즘 대세 TV 프로그램 탐색
  • TV 북마크 | 등록 / 취소 / 조회
  • TV 상세 화면 | 설명 / 시즌 / 에피소드 / 캐스트 정보 / 비슷한 콘텐츠 / 티저 재생
  • TV 프로그램 티저 재생 화면
  • TV 검색
  • 프로필 | 조회 / 수정

스크린샷

😃 프로필

프로필 조회 프로필 수정

🔍 TV 프로그램 탐색 • 검색 • 상세 화면

TV 프로그램 탐색 TV 프로그램 검색 상세 화면 에피소드 리스트
티저 재생 북마크 등록 • 취소 북마크 조회

주요 기술

Framework - SwiftUI / UIKit
Pattern - Router / MVVM / Input-Output / DI / Repository
Network - URLSession / Alamofire
Database - Realm
Reactive Programming - Combine
Etc - Swift Concurrency / WKWebView


핵심 구현

MVVM / Input-Output

  • MVVM 디자인 패턴을 적용함으로써 뷰와 비즈니스 로직을 명확하게 분리
  • Input-Output 패턴을 통해 로직에 사용될 입력값과 뷰에 사용될 출력값을 분리

Alamofire

  • Router 패턴과 TargetType 프로토콜을 통해 네트워크 통신 API를 구조화 및 확장

URLSession

  • URLSession을 통해 네트워크 통신을 함으로써 최적의 성능과 안정성 제공

Concurrency

  • async와 await 키워드를 통해 코드 가독성 향상 및 스레드 생성량과 컨텍스트 스위칭 감소

Etc

  • ViewModifier를 활용해 View들에 대한 CustomWrapper 구현
  • @ViewBuilder를 사용하여 NavigationBarWrapper 구현
  • @ViewBuilder를 통해 NavigationLazyView를 구현함으로써 하위뷰가 그려질 때 init되는 이슈 해결
  • final 키워드와 접근제어자를 통해 컴파일 속도 최적화



트러블 슈팅

1. 하위 뷰가 화면에 보이기 전에 init되는 이슈

  • 클로저를 통해 뷰가 init되도록 NavigationLazyView를 구현
struct NavigationLazyView<T: View>: View {
    let build: () -> T
    
    init(_  build: @autoclosure @escaping () -> T) {
        self.build = build이 
    }
    var body: some View {
        build()
    }
}

NavigationLazyView 적용 전 NavigationLazyView 적용 후



2. View에서 액션에 따라 처리하는 비즈니스 로직이 노출되는 문제(ex: onAppear, button Tap)

  • ViewModel에서 Action이라는 enum을 통해 액션 전용 타입을 구현 후 action 메서드에서 케이스에 따라 비즈니스 로직을 실행하도록 한다.
  • View에서는 viewModel의 사용자 액션과 일치하는 케이스에 대해 action 메서드만 호출 -> viewModel의 비즈니스 로직을 숨길 수 있다.

ViewModel

View


About

TV 프로그램 탐색 앱

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages