Toy Project/Netflix Style Application(iOS)

4. SearchAPI 구현 2 (parsing)

개발자킹콩 2021. 4. 27. 16:36

SearchAPI 구현 2 - parsing

 

 

 

 

현재 받아온 JSON데이터는 다음과 같다.

 

그렇다면 이를 parsing하기위해서 Codable을 이용할 것이다.

 

 

이렇게 key를 맞춰서 parsing 할 준비가 완료되었다.

 

 

 

 


 

 

 

 

Type Method --> search()

검색할 데이터를 SearchBar에 넣고 Search를 누르게 되면 해당 text 데이터를 ITunes에서 네트워킹을 시도한다.

여기서 적절한 예외처리 후 받아온 데이터를 parsing 하는 작업이 필요하다.

왜? 우리는 Movie데이터를 이용하기 때문에!!

 

 

현재 메소드의 길이가 길어지니 parsing하는 method를 새롭게 만들어보자 —> parseMovies()

 

 


 

 

 

받아온 데이터는 현재 Data type를 가진다.

데이터를 받아와서 [Movie]로 변환 시켜주는 type method를 만들었다.

 

 

이 type method 에서 [Movie]를 반환하게 되면 search type method에서 escaping closure에 해당하는 completion 부분을 실행할 데이터가 현재 존재하는 것이다.

그리고 SearchViewController에서 completion에 해당하는 closure의 기능을 구현하는 것이다.

 

 

 

반환하는 [Movie]는 closure의 movies로 받아와서 collectionView에서 보여줄 데이터로 이용된다.

 

 

 


 

 

 

정상작동

 

 

 

정상적으로 데이터 50개를 받아왔다.

 

 

 

 

 


 

 

 

 

 

우리가 해본것을 정리해보자

 

우리는 SearchBar로 원하는 검색 term을 지정해서 검색버튼을 누른다.

이때 키보드는 내려가도록 설정했다. 

물론 데이터를 받아오는 것과 text의 입력여부 또한 검사했다.

 

그리고 SearchAPI를 통해 데이터를 받아오면 Closure를 실행하도록 설정했다.

여기서 외부에서 Completion 을 실행하기에 SearchAPI는 escaping closure로 지정했다.

 

SearchAPI의 경우 인스턴스가 굳이 필요하진 않기에 필요할때 인자만 전달하기 편하게 모든 메소드를 type method로 지정했다. 메소드는 search하는 기능과 parsing하는 기능 두개가 존재한다.

Search의 경우 networking에서 배운 것 처럼 ITunes의 API를 이용해서 JSON데이터를 받아왔다.

 

이를 Swift에서 내가 원하는 변수명과 type으로 사용하기 위해 Response, Movie를 struct로 정의하고 Codable protocol을 이용했다. 함수는 1개의 기능을 가진 것이 유지보수과 관리에 용이하기에 parsing을 하는 기능은 parssMovies에 넣었고 JSONDecoder을 이용해서 기존의 데이터 results를 movies로 받아왔다. 

 

그 후 movies의 count를 출력하는 것으로 데이터를 정상적으로 받아왔음을 확인했다.

 

하지만 우리는 데이터를 받아왔지만 이 데이터를 띄울 CollectionView에 대한 작업은 하지 않았다.

지금부터 시작할 것이다.