Codable한 객체의 property에 초기값이 있을 때 (let vs var)

SteadySlower·2022년 9월 8일
0

Tips

목록 보기
3/19

Codable의 property에 초기값?

Codable은 JSON 객체 등에서 자동으로 Swift의 객체로 바꾸어 줄 수 있도록 해주는 Protocol입니다. 보통은 json을 통해서 해당 객체를 init하려고 채택하는 Protocol이기 때문에 property 초기값이 없이 let을 통해서 선언하는 편인데요. 어떤 이유로 초기값이 필요한 경우도 있습니다. 그 때 property를 어떻게 선언하는지 알아봅니다.

초기값을 가진다면 var로 선언해야 한다.

아래 캡쳐에서 보시는 것처럼 let을 이용해서 선언하는 경우에는 warning이 뜨는데요. 내용은 보면 이렇습니다. “불변의 property는 디코드 되지 않을 것입니다. 왜냐하면 덮어 쓸 수 없는 초기값으로 선언되었기 때문입니다.”

Decode를 할 때 초기값이 있는 경우 이미 그 초기값으로 property를 선언하고 그 property를 다시 덮어쓴 방식으로 디코딩하는 것으로 생각됩니다. 따라서 아래와 같은 에러가 뜨는 것이죠.

따라서 굳이 let을 쓰고자 한다면 초기값을 제거하면 되고 초기값이 꼭 필요하다면 var로 선언해야 합니다.

profile
백과사전 보다 항해일지(혹은 표류일지)를 지향합니다.

0개의 댓글