티스토리 뷰
안녕하세요! 민군입니다. ^-^
현재 커넥트재단 부스트코스 5번째 과제, BoxOffice를 하면서 많은 시행착오를 겪고 있습니다. 아무래도 계속 반복되는 부분이 생기다보니 숙련도가(매우 느리게나마) 쌓이고 있음을 느끼는데요. 오늘 다섯번째 프로젝트 BoxOffice의 두번째 세부영화정보 뷰를 완성하려고 했는데 순조롭지는 못했습니다.
JSON 디코딩단계에서 헤매다가 시간을 많이 먹었습니다. ㅠㅠ 너무 더디지만 해결이 되었습니다! 제가 했던 실수들을 살짝 보여드리며 그와함께 해결했던 과정을 보여드리겠습니다.
그러면서 JSON Data 디코딩등의 데이터처리작업 중에 초보자분들이 주의해야할 사항!도 공유합니다.
위 이미지처럼 컬렉션뷰 혹은 테이블 뷰 형식으로 영화 목록이 주르륵 나오는데요. 한 셀을 선택 하면, 그 셀에 해당하는 영화의 세부 정보가 나오는 방식입니다.
그에 따라 나오는 화면에서 필요한 정보는
http://connect-boxoffice.run.goorm.io/movie?id=영화고유ID값
API로부터 JSON데이터를 받아 디코딩 처리 후 사용을 합니다. 그런데 흑우같이 단일 정보를 구조체배열방식으로 선언을 했더라구요. 단일 영화의 정보인데. 이런 바보같은 실수를 ㅠㅠ...
해당 뷰에서 사용하는 단일객체 방식의 JSON데이터는 [Movie]대신 Movie로 단일 구조체 형식으로 바꾸어 해결했습니다.
제 두번째 실수도 위와 동일합니다. 단일구조의 객체에 배열을 만들어버렸으니까요. 키값이 없는 단일객체 데이터 인데 키값이 있는 구조체배열형식의 JSON Data와 동일한 처리방식을 사용했습니다.
위의 movies데이터의 경우, JSON데이터의 다수의 객체정보를 담는 경우라 위처럼 구조체배열형태를 추가로 정의했는데요. 단일객체를 담는 JSON데이터, "Movie"는 키값이 없는데도 위와 동일한 배열형태([Movie])로 변수를 만들다보니 계속 "~~data is missing" 같은 오류문구가 뜨는 것이었습니다.
단일 데이터는 굳이 구조체배열을 만들 이유가 없죠 위와 같이 단일 형식으로만 정의 후 디코딩처리를 하면 됩니다. 참고사항으로 JSON데이터의 객체배열의 키값유무를 확인 하는 방법을 알려드리겠습니다.
위 내용의 경우 다수의 객체가 배열형태로 이루어져있는 JSON Data형식입니다. [{},{},{}....] 해당 배열 데이터의 키값은 "movies"고, 정렬방식을 설정하는 변수는 0값을 갖고 있는 형식입니다.
그에 반해 일반 단일객체만 존재하는 JSON Data 형식의 예입니다. 보시면 {"":"",,,,,} 이 외에 블럭 바깥으로 나온 값이 없습니다. 중괄호블록은 한세트밖에 없으며 이는 곧 키값이 없는 단일객체에 대한 JSON Data를 의미합니다.
이런 간단한 부분부터 눈에 익힌다면 JSON Data처리를 하는데 점차 익숙해질 수 있을것 같은데 많이 사용해봐야 익숙해 질 것 같습니다. 정리하자면, 다수의 객체정보를 담고있는 구조체배열 형식의 JSON Data는 배열방식으로 디코딩할 준비를 하면 되나, 단일 객체의 JSON Data는 단일 구조체방식으로 받으면 그만입니다.
JSON Data를 파싱하기전 불어오고자 하는 데이터의 형식을 먼저 꼼꼼히 확인 후에 처리를 해주셔야 저같은 실수를 하지 않겠죠? @_@ 오늘은 여기까지, 현재 부스트코스 과제, BoxOffice의 진행상황 공유하면 서 물러가겠습니다 ^-^
▼부스트코스 5번째 과제 진행상황 190403
'iOS 개발' 카테고리의 다른 글
Swift TabBarController 메뉴선택 시 뷰컨트롤러 전환하기 (0) | 2019.04.05 |
---|---|
Swift TableView 섹션헤더셀 고정, 특정헤더 뷰에서 제거하기 (0) | 2019.04.04 |
Swift 컬렉션뷰 화면회전시 레이아웃형태 유지하기 (1) | 2019.04.02 |
Swift 이미지피커 이미지선택 완료 후 에러 해결방법 (0) | 2019.03.28 |
반갑습니다. Creator Min, 민군입니다. (0) | 2017.11.05 |
- Total
- Today
- Yesterday
- 알고리즘문제
- swift언어
- 백준알고리즘
- swift 문자열
- Protocol
- 스위프트
- 프로그래머스swift
- 부스트코스
- SwiftUI
- ios
- createML
- CoreML
- swift
- publisher
- swift reduce
- 자연어처리
- 알고리즘
- 개발자문서
- uikit
- 김프매매
- Collection
- 프로토콜
- 컬렉션
- 프로그래머스
- swift알고리즘
- Swift 알고리즘
- swift string
- 백준swift
- swift문제
- swift 기초
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |