본문 바로가기
iOS/App

박스오피스 앱 만들기(3)

by 황민우 2022. 5. 7.

2022.05.06 - [iOS/App] - 박스오피스 앱 만들기(2)

 

박스오피스 앱 만들기(2)

2022.05.05 - [iOS/App] - 박스오피스 앱 만들기(1) 박스오피스 앱 만들기(1) 이번에는 박스오피스 앱을 만들겠습니다. 먼저 현재 상영 중인 영화의 정보를 받아오기 위해, 영화진흥위원회 오픈 API를 받

seagreen83.tistory.com

지난 포스트 (데이터 값 불러오기)에 이어서, 마무리 제작을 하겠습니다.


Passing

 

- 이번 포스트에서는 인코딩과 디코딩을 동시에 이루는 Codable 프로토콜을 사용함으로 이해가 어렵다면 아래의 포스트를 읽고 오면 좋을 것 같습니다.

2022.04.13 - [iOS/iOS 면접 질문] - Codable

 

Codable

정의 - 자신을 변환하거나 외부 표현으로 변환할 수 있는 타입. - Decodable과 Encodable프로토콜을 준수하는 타입. - Codable은 프로토콜이기 때문에, struct, enum, class에서 모두 채택 가능 - type이 다 지정.

seagreen83.tistory.com

 

- JSON 파싱을 위한 구조체를 생성하겠습니다.

- 여기서 moviewURL 오타를 발견해 movieURL로 수정했습니다,, :)

 

- 구조체의 이름은 JSON 형식에서 담고 있는 이름을 그대로 사용하고,

 

- 다음 링크를 통해 얻고자 하는 정보의 필드 값을 그대로 사용하시면 됩니다.

https://www.kobis.or.kr/kobisopenapi/homepg/apiservice/searchServiceInfo.do

 

영화진흥위원회 오픈API

제공서비스 영화관입장권통합전산망이 제공하는 오픈API서비스 모음입니다. 사용 가능한 서비스를 확인하고 서비스별 인터페이스 정보를 조회합니다.

www.kobis.or.kr

 

- 다시 소스코드로 돌아와 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

 

Smile Han

 

www.youtube.com

 

'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

댓글