이번엔 원하는 데이터를 내가 원하는 데이터를 Struct의 Property로 받아올 것이다.
당연히 json파일을 받아올 것이기에 Codable을 이용할 것이다.
url을 뽑아내는 과정은 이전과 같다.
우선 URLSessionConfiguration을 default로 생성하고 이를 통해 URLSession을 생성한다.
그럼 session으로 실제 네트워킹을 하는 URLSessionTask를 생성할 텐데, 이때 보낼 request url을 만들면 된다.
영어가 아닌 term으로 검색하기 편하게 알아서 incoding 과정을 해주는 URLComponents를 생성한 한다.
URLComponenets는 data를 optional로 저장하기에 URLComponents를 변수에 넣을 때와 url을 받아올때는 optional을 강제로 풀어서 사용한다. --> nil이 아니라는 확신이 있구만
목표
우리는 데이터를 받아와서 이를 우리가 사용하기 편한 형태로 데이터 정제를 할 것이다.
우선 우리가 받아올 데이터의 형식은 2번째 사진과 같다. 그렇다면 resultCount와 results이다.
resultCount는 Int형으로 그냥 받아오는데 우리는 results안에 존재하는 각각의 데이터를 Track이라는 내가 만든 struct형식으로 받아오고 싶다.
--> Track라는 struct를 만들고 Response에서 results를 track로 인식할 CodingKeys를 상수형으로 만들었다. String을 인식하고 CodingKey로 인식하기 위함이다.
resultData를 받아오는 과정은 이전 "URLSession 실습 2"에서 했던 내용이 이어져 온다.
즉, 일단 데이터를 가져오기는 한 것이다. 데이터는 JSON 형태로 되어 있다.
그렇다면 JSON데이터를 parsing해서 내가 원하는 데이터를 뽑아내고 내가 원하는 변수에 집어 넣는 과정을 할 것이다.
우선, JSON 데이터를 분석하기 위해 JSONDecoder을 불러와서 decode를 호출한다.
이때, resultData를 내가 생성한 struct Response로 들고 오도록 했다.
( 여기서 변수의 이름을 다르게 작성하는 경우가 많아서 예외처리 구분인 do,try,catch를 사용했다. )
받아온 데이터를 잘 받아왔는지 확인하기 위해서 response.tracks를 불러와 property를 출력했다.
데이터를 정상적으로 잘 받아왔다.
'IOS application > Networking' 카테고리의 다른 글
9. URLSession 실습 2 (0) | 2021.04.20 |
---|---|
8. URLSession 실습1 (0) | 2021.04.18 |
7. URLSession 개념 (0) | 2021.04.18 |
6. GCD 실습 (0) | 2021.04.17 |
5. DispatchQueue는 어떻게 사용할까? (0) | 2021.04.16 |