금주에 새로 전달받은 프로젝트의 요구사항을 정리해 봅니다.
랜덤한 상품을 앱에 노출시키고, 노출된 상품을 위시 리스트에 담을 수 있는 애플리케이션 만들기
( 데이터 저장과 네트워크 통신이 핵심 )
완성된 내용은 이곳에서 확인하세요!
◇ 프로젝트 목표
[ ] 화면을 전환하는 여러 방식을 이해하고 코드를 작성할 수 있다. (Segue, 코드 활용)
[ ] Swift 메모리 구조에 대해 이해할 수 있다.
[ ] Swift의 ARC 개념에 대해 이해할 수 있다.
[ ] Decodable, Encodable, Codable 개념을 활용하여 데이터 모델링을 할 수 있다.
[ ] URLSession에 대해 이해하고 REST API와 통신할 수 있다.
[ ] 내부저장소 개념에 대해 이해한다.
[ ] Device에 데이터를 저장하는 여러 방법을 이해한다.
[ ] CoreData를 사용하는 방법에 대해 이해한다.
◇ STEP1
- JSON Dummy API를 활용하여, 상품 정보 노출
- URLSession, UIImage, UILabel 사용 필수 ( → URLSession 선행학습 필요)
- title, price, description, thumbnail 노출 필수( → Main story board에서 그렸다. 아래 참조)
- 화면에 “다른 상품 보기” 버튼을 두어, 버튼을 누를 때 마다 랜덤한 ID의 상품을 노출
- URLSession, UIButton 사용 필수 ( → URLSession 선행학습 필요)
◇ STEP2
- 화면에 “위시 리스트 담기” 버튼을 두어, 해당 상품을 내부 저장소에 저장
- Core Data, UIButton 사용 필수
- 화면에 “위시 리스트 보기” 버튼을 두어, 내부 저장소에 저장된 상품 리스트를 노출
- id, title, price 노출 필수 (ex: [1] iPhone 9 - 549$)
- UIViewController, TableView 사용 필수
- 혹은 UITableViewController 로 대체해 사용 가능
요구사항 (반드시 구현해야 할 기능)
Lv1. 데이터 모델링하기
Lv2. 위시 리스트 메인 페이지 구현
Lv3. “위시 리스트 보기” 페이지 구현
[ title, price, description, thumbnail 노출 ]을 위해 UIImage View와 Stack View를 사용하여 좌측 상단 UI 를 구성하고, UIButton을 사용하여 '위시리스트 담기' 와 '위시리스트 보기' 버튼을 만들었다. ('다른 상품 보기'는 요구 조건에 없으나 발제 문서 화면 예시에 있길래 나도 일단 넣어보았다..)
◇ Dummy API 정보
[GET] https://dummyjson.com/products/{ID}
- ID의 범위: 1 ~ 100
- Response JSON
{
"id": 1,
"title": "iPhone 9",
"description": "An apple mobile which is nothing like apple",
"price": 549,
"discountPercentage": 12.96,
"rating": 4.69,
"stock": 94,
"brand": "Apple",
"category": "smartphones",
"thumbnail": "https://i.dummyjson.com/data/products/1/thumbnail.jpg",
"images": [
"https://i.dummyjson.com/data/products/1/1.jpg",
"https://i.dummyjson.com/data/products/1/2.jpg",
"https://i.dummyjson.com/data/products/1/3.jpg",
"https://i.dummyjson.com/data/products/1/4.jpg",
"https://i.dummyjson.com/data/products/1/thumbnail.jpg"
]
}
♡ 주의사항
API는 호출 제한이 있어요. 다양한 에러 로그가 나올 수 있으니, 에러 핸들링을 어떻게 해줄지 고민해봅시다.
호출한 API는 JSON 방식으로 응답을 줍니다. 해당 값을 적절히 가져와서(Parsing 파싱)해서 사용해주세요.
(아래 링크 오류나네.. ;; )
* 참고 : https://developer.mozilla.org/ko/docs/Learn/JavaScript/Objects/JSON
라이브러리(Alamofire)를 사용하지 말고 URL Session을 사용하여 구현해주세요.
'iOS 앱 개발자 프로젝트 > iOS 숙련' 카테고리의 다른 글
[iOS] Decodabe, Encodable, Codable (0) | 2024.04.13 |
---|---|
[iOS] URLSession (0) | 2024.04.12 |
[iOS] Core Data stack (0) | 2024.04.12 |
[iOS] Core Data (+ Modeling Data) (0) | 2024.04.11 |
[Swift] ARC (Automatic Reference Counting) (0) | 2024.04.09 |