네이버 쇼핑 검색 API를 활용하여 상품을 검색하고 찜할 수 있는 앱
-
기간 :
2024.06.14 ~ 2024.06.30(약 2주) -
개발 인원 :
iOS 1명 -
기술 스택 및 라이브러리 :
UIKitWebkitSnapKitThenToast-SwiftKingfisherRealmAlamofire -
프로젝트 주요 기능
상품 검색- 최근 검색어 조회/삭제 기능
- 상품 검색 결과 조회/정렬 기능
- 상품 상세 정보 조회 기능
Apple 브랜드관- Apple 제품 콜렉션 조회 기능
상품 찜하기- 상품 찜 버튼 기능
- 찜한 목록 조회/삭제/정렬 기능
| 상품 검색 | Apple 브랜드관 | 상품 찜하기 |
|---|---|---|
![]() |
![]() |
![]() |
-
UserDefaults와JSONEncoder/Decoder를 활용하여최근 검색어 조회 기능구현 -
Repository 패턴을 활용하여외부 데이터 소스 접근 작업 추상화라우터 패턴과싱글턴 패턴활용하여네트워크 작업 추상화
-
UICollectionViewDataSourcePrefetching을 활용하여페이지네이션기능 구현 -
WKWebView를 활용하여상품 상세 정보 조회 기능구현
-
UITableView와UICollectionView을 혼합하여수직/수평 스크롤 뷰구현 -
DispatchGroup을 사용하여데이터 순서 보장과 TableView의 중복 갱신 방지
-
Repoistory 패턴을 사용하여로컬 데이터 소스 접근 작업 추상화 -
검색 결과 상품 리스트의
찜 여부 판단 로직을O(N^2)에서 O(N)으로 개선
-
특정 CollectionView의
렌더링 누락 현상- 원인 분석:
cellForRowAt메서드 호출 시점에 위임되어 렌더링 되지 않은 TableViewCell에서 CollectionView를 렌더링하려고 함 - 해결:
willDisplay메서드 호출 시점에 위임
- 원인 분석:
-
UITableViewCell 재사용 시
데이터 불일치 문제- 원인 분석: 재사용 시 이전에 설정한 위임이 해제되지 않아, 기존 셀의 데이터가 남아있어 불일치 문제 발생
- 해결:
prepareForReuse메서드에서 위임을 해제하여 해결
-
원인 분석
찜한 목록 리스트 화면에서는viewWillDisappear메서드 호출 시점에 Realm에서 해당 상품을 삭제검색 결과 화면에서는viewWillAppear메서드 호출 시점에 찜 여부 정보를 업데이트viewWillDisappear보다 viewWillAppear가 더 먼저 호출
-
해결
검색 결과 화면에서 찜 여부 정보 업데이트 시점을viewIsAppearing메서드 호출 시점으로 변경
-
원인 분석
- WKWebView의
didFailProvisionalNavigation메서드 내에서 에러 메세지를 확인한 결과 iOS의ATS 정책과 관련된 것을 확인 - 실제로 특정 링크가 사용중인 프로토콜은
HTTPS가 아닌 HTTP
- WKWebView의
-
해결
Info.plist에서Allow Arbitrary Loads를 NO로 설정하여 해결


