[IOS] '네이버 검색 API'로 영화 검색 앱 만들기 - Ver.1

East Silver·2022년 1월 17일
0

진행 상황: 1차 완료

Goal

  • 네이버 영화 API를 이용해서 시작 화면에는 장르별 영화를 보여주고 영화 겁색 기능을 제공한다.
  • 영화에 대한 자세한 사항을 제공한다.
  • 영화를 검색하면 검색어를 바탕으로 연관된 검색 결과를 제공한다.

Skills

  • URLSession
  • KingFisher

Day 1

API 이용신청

네이버 API 사이트에 원하는 API를 신청했다. 영화 검색을 할 것이기 떄문에 "검색" API를 신청했다!

코드기반 UI구성

  • 홈 뷰
    Nested CollectionView OR ScrollView/StackView/UIView/CollectionView
    OTT서비스에서 자주 볼 수 있는 카테고리별로 영화를 가로 방향으로 나열한 구성으로 만들고 싶은데 어떤 방법으로 할 지는 고민이다. 뭐가 더 좋을지..!
  • 검색기능
    UISearchBar OR UITextfiled
    배달의 민족 앱에서 특정 식당 화면에서 메뉴를 검색할때 나오는 화면을 참고해서 만드려고 한다. 영화를 검색하면 테이블 뷰 형태로 검색어에 해당하는 영화를 보여주는 주고 싶다. 어떤 것이 더 나을까?

Day 2

URLSession

앱과 서버간의 Json형태의 데이터를 주고 받기 위해서 꼭 알아야 하는 API이다! 과정을 이해하고 외워야하는 부분도 있는 것 같다.
간단하게 과정을 나열하자면,
1. configuration 결정
2. session 생성
3. URL
4. Task 생성
5. Decoding
URLSession은 다른 포스트로 더 자세히 다뤄야 할 것 같다!

싱글톤 패턴

URLSession 처리하는 과정을 싱글톤 패턴을 적용해보고 싶어서 도전.

class Singleton {
    static let shared = Singleton()
    private init() {}
}
  • static let으로 자기 자신을 선언한다.
  • private init() {}코드가 없다면, static let을 사용할 때마다 객체가 매번 생성되므로 private init선언한다.
    참고링크

Day 3

Textfiled

검색 기능을 textfiled를 이용해서 구현하고 있었는데,,UISearchController를 통해서 검색기능을 구현하면 검색 결과를 tableview로 보여주는 것을 좀 더 간편하게 할 수 있다. 일단 textfiled로 해보고 바꿔야지ㅜ장단점은 제대로 알 수 있을듯,,
참고 링크

일단은 Tableview로 해보자..

검색 결과 갯수에 따라 Tableview를 담은 컨테이너 뷰 높이를 다르게 하고 싶었다.

if 셀 높이 * 셀 갯수 > self.view.bounds.height {
	컨테이너 뷰 길이 = self.view.bounds.height
}else {
	컨테이너 뷰 길이 = 셀 높이 * 셀 갯수
}

이런식으로 컨테이너 뷰의 길이를 조정해주었는데, UISearchController로는 더 쉽게 할 수 있는지 알아바야겠다.

Swip 감지

let tableView: UITableView = {
        let tableView = UITableView()
        tableView.keyboardDismissMode = .onDrag 
        return tableView
}()

UIswipegesturerecognizer로 계속 시도하다가 안되서 구글링해보니까 이러한 방법이 있었다! 검색 결과 많으면 키보드에 가려서 안보이기 때문에 테이블 뷰의 keyboardDismissMode를 .onDrag로 해주면 swipe 할 때 키보드가 내려간다

Day 4

Indicator view

홈 뷰의 이미지가 모두 불러 오기 전에 로딩이 되고 있다고 알려줄 수 있는 Indicator view를 추가해 주었다.

Web view

영화 상세페이지로 웹 뷰를 띄어주고 3가지 방법이 있는데 SafariServices를 사용했다.

어려웠던 점 & 해결 방안 ✅

  1. 기능 구현할때 여러가지 방법이 있는데 어떻게 골라야 할까?
  2. 테이블 뷰의 cell의 갯수에 따라 컨테이너 뷰의 길이 조정 방식이 UISearchController로는 더 쉽게 할 수 있는지 알아바야겠다.

개선해야 할 점 😎

  • 홈 화면에서의 nested collectionview를 를 이용해서 다시 해보기 - 참고링크
  • 검색 기능에서 앱이 느려지고 멈추는 점 개선 -> operationQueue?
  • URLSession 대신 Almofire로 해보고 장단점 파악 ✅
  • Indicator view 추가해보기 ✅

다음 프로젝트에서 업그레이드 중!!

https://levenshtein.tistory.com/527
https://medium.com/@dn070287gav/all-what-you-need-to-know-about-uicollectionviewcompositionallayout-f3b2f590bdbe
https://demian-develop.tistory.com/22?category=908651

profile
IOS programmer가 되고 싶다

0개의 댓글