내일배움캠프 iOS

UIKit) TIL # 50 앱개발 심화주차 개인과제 - 기획

yjuni22 2024. 12. 30. 14:00

앱개발 심화강의에서 배우는 MVVM 패턴을 활용해보기 위한

새로운 과제가 있다.

 

우선 기존 MVC 패턴으로 구현 후 MVVM 패턴으로 리팩토링해보며
두 패턴의 차이점과 장단점을 알아보려고 한다.

 

책 검색하고 저장하는 앱

CoreData와 HTTP 통신을 사용하여 책을 검색하고 저장하는 앱의 기능을 구현합니다.

 

Level 1 - 화면 구성

  • 아래 하단 탭바로 '검색 탭', '담은 책 리스트 탭' 이 있다.
  • 상세화면은 검색결과의 리스트 아이템을 '탭' 하면 모달로 띄워진다.
  • 리스트 탭은 '담기'를 한 책 리스트를 CoreData로 저장 및 리스트 화면에서 보여진다.

Level 2 - 책 검색 화면 구현

  • 서치바를 이용하여 검색
  • 검색(입력완료)를 누르면, 검색 결과 리스트에 책 목록이 등장
  • 카카오 책 검색 API 활용

Level 3 - 책 상세 보기 & 담기 기능 구현

  • CoreData 활용
  • 스크롤 가능
  • X, 담기 버튼 - 플로팅 버튼 ( 스크롤과 상관없이 항상 화면위에 노출 )
  • 모달이 닫힌 후, 책 담기 완료! 알림창 띄우기 - Delegate 패턴 활용
  • 담은책 화면 - 전체삭제, 추가 버튼 - 책 검색화면 띄우기

Level 4 - 최근 본 책 기능 구현

  • 사용자가 책 상세보기 화면까지 살펴본 책이 있을 경우, 검색결과 리스트의 최상단에 최근 본 책 을 보여줍니다
  • 검색 결과 리스트는 이제 2개의 섹션을 사용
  • 최근 본 책이 없다면 섹션을 노출하지 않습니다.
  • (선택구현) 최근 본 책을 ‘탭’하면 책 상세화면이 등장합니다.

 

(도전) Level 5 - 무한 스크롤 기능 구현, MVVM 리팩토링 (선택)

  • 검색결과 리스트에 무한 스크롤 구현
  • 응답 중 meta 필드 를 활용해 무한 스크롤을 구현해볼 수 있을 것 같은 생각이 듭니다.
  • 만약 위 API 로 무한 스크롤 구현 불가능하다면, 그 이유를 제출하셔도 좋습니다.
  • MVVM 으로 리팩토링

MVVM 패턴과 Rx를 사용하는 챌린지 과제와
MVC 패턴을 사용하는 Advance 과제 중

 

아직 MVVM 에 대한 이해가 부족하다고 생각했기에

MVC 패턴으로 구현 이후 리팩토링하며 MVVM패턴을 추가 공부하고자
Advance 과제를 선택하였다.

 

전반적인 기획은 가이드에 따라 진행하였다.

 

아키텍처 : MVC 

- 확실하게 뷰와 뷰컨트롤러, 모델을 구분하고 이후 MVVM 통합을 해보며 차이점을 이해해보자

 

유저 플로우 

- 첫 화면

책 검색 탭 화면 -> 책 검색 -> 검색 리스트 표시 -> 셀 클릭 시 상세화면 -> '담기' 버튼 클릭 시 담은책 리스트 탭에 표시