본문 바로가기
iOS

[iOS 앱 개발] Swift 중첩 구조체 사용하기

by Dokon Jang 2022. 10. 7.
반응형

대부분의 OpenAPI는 XML, JSON 등의 형식으로 데이터를 제공하고 있습니다.
JSON은 XML보다 핸들링하기도 좋고 가독성도 좋아서, 앱 개발 시 JSON을 많이 활용하고 있습니다.
Swft에서 JSON을 핸들링하기 위해서 포로토클 Codable을 상속 받아서 구조체를 구현하게 됩니다.
OpenAPI의 JSON은 다양한 형식으로 구성되어 있어서 여러 구조체를 조합해야 하는 경우가 대부분일겁니다.
그래서 중첩 구조체로 구현하여, 각각의 구조체를 하나의 구조체로 구현해봅니다.

 

카카오의 검색 OpenAPI의 결과
{
  "meta": {    
    "total_count": 6033,
    "pageable_count" : 800,
    "is_end": false
  },
  "documents": [
    {
      "title": "AOA 지민·김용만, 돼지꼬리 맛에 정신혼미 ‘극찬세례’",
      "play_time": 185,
      "thumbnail": "https://search2.kakaocdn.net/argon/138x78_80_pr/FRkbdWEKr4F",
      "url": "http://tv.kakao.com/channel/2653417/cliplink/304487728?playlistId=87634",
      "datetime": "2017-05-06T00:36:45+09:00",
      "author": "_SBS"
    },
    ...
  ]
}

 

카카오의 검색 OpenAPI의 결과 중첩구조체
struct KakaoFind {
	var meta : Meta
	var documents : [Document]
	
	struct Meta {
		var total_count : Int
		var pageable_count : Int
		var is_end : Bool
	}
	
	struct Document {
		var title : String
		var play_time : Int
		var thumbnail : String
		var url : String
		var datetime : String
		var author : String
	}
}

 

위의 중첩구조체를 생성하는 코드 예제
var meta : KakaoFind.Meta = KakaoFind.Meta(total_count : 10, pageable_count : 2, is_end : false)

var documents : [KakaoFind.Document] = []
documents.append(KakaoFind.Document(title : "타이틀1", play_time : 10, thumbnail : "이미지1", url : "https://", datetime : "2022-10-01", author : "제작자1"))
documents.append(KakaoFind.Document(title : "타이틀2", play_time : 20, thumbnail : "이미지2", url : "https://", datetime : "2022-10-02", author : "제작자2"))


var kakao : KakaoFind = KakaoFind(meta : meta, documents : documents)
반응형

댓글