인코딩 및 디코딩을 위한 키로 사용할 수 있는 타입 프로토콜이다.
쉽게 말하면 JSON 과 같은 형태의 데이터를 Swift 객체로 파싱할 때 KEY 값을 지정해줄 수 있는 타입인 프로토콜이다.
(protocol 설명은 곧..작성 예정)
{
"name" : "JESSIE",
"age" : "15",
"birth_date" : "2008년 08월 24일"
}
struct Student: Codable {
let name: String
var age : String
let birthDate : String
}
위 JSON 데이터를 위 Swift 의 Student 객체에 파싱하려고 할 때 정상적으로 파싱이 될까?
정답은 NO!!
JSON 데이터의 key 값과 객체의 변수명이 일치해야 정상적으로 파싱이 된다.
Swift.DecodingError.keyNotFound(SwiftPratice.Person.(CodingKeys in….)
Swift 개발 시 기본적으로 사용하는 단어표기법은 camel case(ex: birthDate)인데(프로젝트에 따라 다를 수도 있다..)
보통 dataBase 컬럼 정의 시에는 snake case(birth_date)를 보통으로 사용하기도 하고, 각 언어의 성격에 따라 변수 네이밍이 다를 수 있기 때문에 key값을 필히 확인하고 파싱해주어야 한다!!
이러한 상황에서 사용하는 것이 CodingKey 이다.
struct Student: Codable {
let name: String
var age : String
let birthDate : String
enum codingKeys: String, CodingKey {
case name,
case age,
case birthDate = "birth_date"
}
}
CodingKey 는 String(문자열)으로 된 key 값을 따로 명시하여 데이터 파싱이 정상적으로 될 수 있도록 해준다.
Student 라는 객체에 데이터를 파싱할 때 key 값은 String 이므로 rawValue 가 String 임을 명시해주고, CodingKey 프로토콜을 채택하여 key 를 codingKeys enum 과 파싱하도록 해주면 끝!
CodingKey 이렇게 간단하게 사용할 수 있습니다 ^__^