후회 - 그 때 샀으면 지금 얼마일까?
그 때 샀다면.. 지금 얼마였을까? 상상만 하지말고, 과거와 실시간 가격을 비교해보세요!
개발 기간 : 2022.04.06 ~ 업데이트 진행 중 출시 날짜 : 2022.05.22
임지성 | 황제하 |
---|---|
@yim2627 | @HJEHA |
온보딩 뷰 | 메인 화면 | 상세 화면 |
---|---|---|
Escaping Closure
중첩 사용을 피하고, 선언형 프로그래밍을 통해 코드 응집도를 높이고, 효율적인 비동기 처리를 위해RxSwift
를 사용하였습니다.- 발생한 데이터를 RxSwift를 통해 데이터 각각 하나의 스트림을 따라 View까지 이어지고, 스트림이 끊어지지 않도록 데이터 바인딩을 구현하였습니다.
URLSessionWebSocketTask
을 활용하여 상세화면에서 코인 가격을 실시간으로 갱신하고 있습니다.
UIImageView
의Context
와Path
을 활용하여 날짜별 종가 차트를 구현했습니다.
- URLSession을 사용하여 Http통신을 구현하였습니다.
- RxSwift를 사용하여 서버에 GET요청 후 받아오는 데이터를 하나의 스트림으로 View에 적용되도록 하였습니다.
- 코인에 대한 상세 정보(과거/현재 가격, 거래량, 거래대금, 체결 내역)를 요청하여 거래대금 Top50 코인의 정보를 가져와 선택한 날짜의 가격을 조회하고 있습니다.
- 투자 날짜, 투자금을 Input으로 받은 후 ViewModel에서 가격 비교 및 손익 계산한 후 뷰에 반영하였습니다.
- 컬렉션 뷰를 구현할 때
Diffable DataSource
를 사용하였습니다. - 뷰모델에서 가공한 타입에 Hashable을 채택 후 Output으로 바인딩 해줬습니다.
- 뷰컨트롤러에서 Output을 subscrive후 내려온 데이터를 apply 했습니다.
- MVVM을 도입하여 뷰컨트롤러와 뷰는 화면을 그리는 역할에만 집중하고, 데이터 관리, 비지니스 로직은 뷰모델에서 진행하여 역할을 명확히 하였습니다.
- Presentation Layer, Domain Layer, Data Layer로 역할과 영역을 분리하여 관리했습니다.
- Presentation Layer에는
뷰
,뷰컨트롤러
,뷰모델
이 포함되어 있습니다. - Domain Layer에는
Entity(모델)
,UseCase
,Repository(Protocol)
이 포함되어 있습니다. - Data Layer에는
DTO(네트워크 모델)
,Repository
,Network Service
가 포함되어 있습니다.
- 뷰모델에 Input과 Output을 정의했습니다.
- 뷰, 뷰컨트롤러에서 들어오는 입력 값을 Input으로 정의하고 Input과 데이터를 가공하여 뷰에 보여질 데이터를 Output으로 바인딩했습니다.
향후 MVMM-C 적용 예정