Swift/Rick & Morty

[iOS] Rick&Morty - #3 Data Models

devKen 2023. 2. 28. 11:54

Model

모델이란 데이터 타입을 의미한다. 보통 API 통신에서 대응하기 위해 자주 쓰는 느낌이 있지만 사실 Local에서도 올 수 있다는 걸 유념하자

API 쓰기 위해 파악할 것

API에서 보내는 데이터를 파악해야 한다. 이를 위해서는 API를 공개하고 있는 문서를 찾고, 해당 문서에서 스킴(Schem) 혹은 스키마(Schema)를 찾아라. 이를 이용하여 데이터 타입을 추론할 수 있고 Model을 만들 수 있다.

영상에서는 스키마를 복사 붙여넣기 하고 멀티라인 드래그를 통하여 프로퍼티를 만드는 방법으로 모델 struct를 제작했다.

 

하지만, 난 아프라즈와는 달리 QuickType이라는 사이트 추천하고 싶다. QuickType은 스키마나, API 결과로 나온 Json을 복사&붙여 넣기만으로 자동으로 원하는 언어의 Model을 만들어준다. 특히 프로퍼티가 많은 경우 훨씬 일이 줄어 고마운 사이트이다.

https://quicktype.io

 

API의 데이터 key값과 스위프트의 명명법이 다른 경우

예를 들어 API 통신의 결과로 air_date = "2017-01-11" 이라는 데이터를 받았다고 가정하자.

하지만, 스위프트에서는 Lower Camel Case를 사용해서 프로퍼티를 만든다. 어떻게 할까?

let airDate: String

 

아프라즈는 그냥 air_date로 만들었다. 그런데 신경 쓰이는 건 사실이니까 나는 CodingKey 프로토콜을 사용했다. 

 

CodingKey는 값을 앞서 언급한 상황에서 원하는 이름으로 매칭을 도와주는 역할을 한다.

struct RMEpisode: Codable {
    let id: Int
    let name, airDate, episode: String
    let characters: [String]
    let url: String
    let created: String
 
    enum CodingKeys: String, CodingKey {
        case id, name
        case airDate = "air_date"
        case episode, characters, url, created
    }
}

 

끝!