본문 바로가기

iOS 앱 개발자 프로젝트/iOS 숙련

[iOS] WishList App (feat. Network &API)

금주에 새로 전달받은 프로젝트의 요구사항을 정리해 봅니다. 

 

랜덤한 상품을 앱에 노출시키고, 노출된 상품을 위시 리스트에 담을 수 있는 애플리케이션 만들기

( 데이터 저장네트워크 통신이 핵심 )

 

완성된 내용은 이곳에서 확인하세요!


 

◇  프로젝트 목표

 

[ ]   화면을 전환하는 여러 방식을 이해하고 코드를 작성할 수 있다. (Segue, 코드 활용)

[ ]   Swift 메모리 구조에 대해 이해할 수 있다.

[ ]   Swift의 ARC 개념에 대해 이해할 수 있다.

[ ]   Decodable, Encodable, Codable 개념을 활용하여 데이터 모델링을 할 수 있다.

[ ]   URLSession에 대해 이해하고 REST API와 통신할 수 있다.

[ ]   내부저장소 개념에 대해 이해한다.

[ ]   Device에 데이터를 저장하는 여러 방법을 이해한다.

[ ]   CoreData를 사용하는 방법에 대해 이해한다.

 

 

◇  STEP1

  1. JSON Dummy API를 활용하여, 상품 정보 노출
    • URLSession, UIImage, UILabel 사용 필수 ( → URLSession 선행학습 필요)
    • title, price, description, thumbnail 노출 필수( → Main story board에서 그렸다. 아래 참조)
  2. 화면에 “다른 상품 보기” 버튼을 두어, 버튼을 누를 때 마다 랜덤한 ID의 상품을 노출
    • URLSession, UIButton 사용 필수 (  URLSession 선행학습 필요)

 

◇  STEP2

  1. 화면에 “위시 리스트 담기” 버튼을 두어, 해당 상품을 내부 저장소에 저장
    • Core Data, UIButton 사용 필수
  2. 화면에 “위시 리스트 보기” 버튼을 두어, 내부 저장소에 저장된 상품 리스트를 노출
    • 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