Kakao Book Search API를 활용해 책을 검색하고, 최근 본 책과 담은 책을 관리할 수 있는 iOS 애플리케이션입니다.
사용 기술:
- UIKit
- RxSwift & RxCocoa (MVVM)
- CoreData
- SnapKit, Then, Alamofire, Kingfisher
-
책 검색
- Kakao API를 이용한 도서 검색
- 무한 스크롤(Infinite Scroll)로 추가 페이지 로딩
- RxDataSources를 활용한 검색 결과 TableView 바인딩
-
헤더 배너
BannerView로 프로모션 배너 표시BannerViewModel에서 배너 데이터 관리 (현재 1개)
-
최근 본 책
- 검색 결과 클릭 시 CoreData에 저장
RecentBookCell을 활용한 가로 스크롤 CollectionView- 펼치기/접기 토글 기능 제공
-
담은 책 (MyPage)
SavedBookManager로 CoreData CRUD 처리MyPageViewController에서 RxSwift 바인딩- 전체 삭제 버튼 및 검색 탭으로 이동해 포커스 기능
-
상세 화면
BookDetailViewController에서 도서 정보, 썸네일, 가격 표시- Kingfisher로 이미지 로딩
- 중복 저장 방지 및 알림 처리
-
ViewModels
SearchViewModelBannerViewModelMyPageViewModel
-
Reactive Components
BehaviorRelay,Driver,Observable을 사용해 데이터 및 이벤트 흐름 관리
-
BookService (Alamofire + RxSwift)
- Kakao 도서 검색 API 호출
- 페이지당 15개 결과 제공
- SnapKit: 코드 기반 Auto Layout
- Then: 초기화 코드 간결화
- RxDataSources: TableView 섹션 모델 바인딩
- UICollectionViewCompositionalLayout: 배너 및 최근 본 책 가로 스크롤 구현
-
CoreData
BookEntity로 최근 본 책 및 담은 책 관리SavedBookManager에서 CRUD 메서드 제공
-
중복 체크: 동일 타이틀 + 저자 중복 저장 방지
AdvanceApp/
├─ Model/
│ ├─ Book.swift
│ ├─ BookItem+CoreData.swift
│ └─ BannerViewData.swift
├─ Service/
│ ├─ BookService.swift
│ └─ SavedBookManager.swift
├─ ViewModel/
│ ├─ SearchViewModel.swift
│ ├─ BannerViewModel.swift
│ └─ MyPageViewModel.swift
├─ ViewControllers/
│ ├─ MainTabBarController.swift
│ ├─ SearchViewController.swift
│ ├─ BookDetailViewController.swift
│ └─ MyPageViewController.swift
├─ View/
│ ├─ BannerView.swift
│ └─ Cell/
│ ├─ BookCell.swift
│ └─ RecentBookCell.swift
└─ Resources/
├─ Assets.xcassets
└─ Secrets.plist (API Key)
![]() |
![]() |
|---|


