/Huhoe

후회 - 그때 샀으면 지금 얼마일까?

Primary LanguageSwiftMIT LicenseMIT

후회 - 그 때 샀으면 지금 얼마일까?

후회 설명_사이즈조절

후회 - 그 때 샀으면 지금 얼마일까?

그 때 샀다면.. 지금 얼마였을까? 상상만 하지말고, 과거와 실시간 가격을 비교해보세요!

개발 기간 : 2022.04.06 ~ 업데이트 진행 중 출시 날짜 : 2022.05.22

앱 스토어 링크

개발자 소개

임지성 황제하
@yim2627 @HJEHA

프로젝트 소개

개발 환경

구동 화면

온보딩 뷰 메인 화면 상세 화면

프로젝트 주요 기능

비동기 프로그래밍(RxSwift)

  • Escaping Closure 중첩 사용을 피하고, 선언형 프로그래밍을 통해 코드 응집도를 높이고, 효율적인 비동기 처리를 위해 RxSwift를 사용하였습니다.
  • 발생한 데이터를 RxSwift를 통해 데이터 각각 하나의 스트림을 따라 View까지 이어지고, 스트림이 끊어지지 않도록 데이터 바인딩을 구현하였습니다.

실시간 가격 조회

  • URLSessionWebSocketTask을 활용하여 상세화면에서 코인 가격을 실시간으로 갱신하고 있습니다.

날짜별 종가 차트

  • UIImageViewContextPath을 활용하여 날짜별 종가 차트를 구현했습니다.

과거 코인 가격 조회, 현재 가격과 손익 계산

  • URLSession을 사용하여 Http통신을 구현하였습니다.
  • RxSwift를 사용하여 서버에 GET요청 후 받아오는 데이터를 하나의 스트림으로 View에 적용되도록 하였습니다.
  • 코인에 대한 상세 정보(과거/현재 가격, 거래량, 거래대금, 체결 내역)를 요청하여 거래대금 Top50 코인의 정보를 가져와 선택한 날짜의 가격을 조회하고 있습니다.
  • 투자 날짜, 투자금을 Input으로 받은 후 ViewModel에서 가격 비교 및 손익 계산한 후 뷰에 반영하였습니다.

Diffable DataSource

  • 컬렉션 뷰를 구현할 때 Diffable DataSource를 사용하였습니다.
  • 뷰모델에서 가공한 타입에 Hashable을 채택 후 Output으로 바인딩 해줬습니다.
  • 뷰컨트롤러에서 Output을 subscrive후 내려온 데이터를 apply 했습니다.

App Architecture

MVVM

  • MVVM을 도입하여 뷰컨트롤러와 뷰는 화면을 그리는 역할에만 집중하고, 데이터 관리, 비지니스 로직은 뷰모델에서 진행하여 역할을 명확히 하였습니다.

Clean Architecture

  • Presentation Layer, Domain Layer, Data Layer로 역할과 영역을 분리하여 관리했습니다.
  • Presentation Layer에는 , 뷰컨트롤러, 뷰모델이 포함되어 있습니다.
  • Domain Layer에는 Entity(모델), UseCase, Repository(Protocol)이 포함되어 있습니다.
  • Data Layer에는 DTO(네트워크 모델), Repository, Network Service가 포함되어 있습니다.

Input/Output Modeling

  • 뷰모델에 Input과 Output을 정의했습니다.
  • 뷰, 뷰컨트롤러에서 들어오는 입력 값을 Input으로 정의하고 Input과 데이터를 가공하여 뷰에 보여질 데이터를 Output으로 바인딩했습니다.

향후 MVMM-C 적용 예정

상세 내용 (트러블 슈팅 등) WIKI 작성중

후회 Wiki