2022.05.06 - [iOS/App] - 박스오피스 앱 만들기(2)
지난 포스트 (데이터 값 불러오기)에 이어서, 마무리 제작을 하겠습니다.
Passing
- 이번 포스트에서는 인코딩과 디코딩을 동시에 이루는 Codable 프로토콜을 사용함으로 이해가 어렵다면 아래의 포스트를 읽고 오면 좋을 것 같습니다.
2022.04.13 - [iOS/iOS 면접 질문] - Codable
- JSON 파싱을 위한 구조체를 생성하겠습니다.
- 여기서 moviewURL 오타를 발견해 movieURL로 수정했습니다,, :)
- 구조체의 이름은 JSON 형식에서 담고 있는 이름을 그대로 사용하고,
- 다음 링크를 통해 얻고자 하는 정보의 필드 값을 그대로 사용하시면 됩니다.
https://www.kobis.or.kr/kobisopenapi/homepg/apiservice/searchServiceInfo.do
- 다시 소스코드로 돌아와 JSON형식의 데이터를 Decoder 하는 코드를 작성하겠습니다.
- 기존에 작성했던 것들은 작동확인을 위한 코드이므로 지우셔도 상관없습니다.
- JSON 객체에서 데이터 타입의 인스턴스를 디코딩하는 객체인 decoder 변수를 만듭니다.
- JSONdata를 MovieData형으로 디코딩하는 과정인데,
- 주의사항으로 static metatype에 값을 넣기 위해서는 MovieData 뒤에 반드시. self를 붙여줘야 합니다.
- 그리고 에러 핸들링(예외처리)을 작성해줘야 합니다.
- 그럼 한 번 코드를 통해 데이터 값이 제대로 넘어오는지 확인해보겠습니다.
- 앞서 생성한 구조체의 변수를 통해 배열에 저장된 영화 제목들이 정상적으로 출력되는 것을 확인할 수 있습니다.
- 방금 출력한 것을 테이블 뷰에 표현하기 위해 MovieData 타입의 movieData라는 변수를 생성하겠습니다.
- 그리고 다시 getData 메서드로 돌아와 movieData 변수에 decodedData를 초기화하기 위해 코드를 작성합니다.
- 이때, 클로저 안에서 객체의 변수 또는 함수를 사용(접근) 하기 위해서는 self. 을 반드시 사용해야 합니다.
Table View
- 다시 테이블 뷰로 넘어와 테이블 뷰의 항목을 나타내는 메서드의 값을 변경해주겠습니다.
- 그리고 테이블 뷰에서 영화 제목을 나타내는 코드를 입력해주고,
- 테이블 뷰의 row와 section을 다시 로드하는 reloadData 메서드를 사용해줘야 하는데,
- 해당 메서드는 백 그라운드가 아닌 main queue에서 비동기로 실행되야하므로 DispatchQueue.main.async으로 작성하지 않으면 에러가 발생합니다.
실행결과
- 실행을 해보면 JSON Data의 정보를 불러와 table view로 출력되는 것을 확인할 수 있습니다.
- cell.text의 들어갈 값을 openDt로 바꿔주면, 영화 개봉일이 출력되기도 합니다.
내용 출처
smile Han Youtube -> 박스 오피스 앱 만들기 15~18
https://www.youtube.com/channel/UCM8wseo6DkA-D7yGlCrcrwA
'iOS > App' 카테고리의 다른 글
박스오피스 앱 만들기(4) (0) | 2022.05.08 |
---|---|
박스오피스 앱 만들기(2) (0) | 2022.05.06 |
박스오피스 앱 만들기(1) (0) | 2022.05.05 |
Collection View (0) | 2022.04.16 |
Realm이란? (이론) (0) | 2022.04.02 |
댓글