작업중에 json 데이터가 제대로 들어가지 않는 이슈가 발생했다.
문제가 발생한 코드는 아래와 같은데:
struct Payload: Decodable {
...
let value: Int? = 0
...
}
기본값을 넣어줘서 json decode 데이터가 들어가지 않는 것이었다.
Decodable이 init(from decoder: Decoder) throws
생성자 직접 구현하면 그 이유를 알 수 있는데.
let(상수)로 선언 했기 때문에 기본값이 할당된 이후 바꿀 수 없다는 메세지였다.
생성자 안에서 멤버에 할당하는 코드를 작성해왔기 때문에, 당연하게 생성자 안에서 사용한 값으로 덮여쓰여 문제가 없을 것이다라는 예상과 달랐다.
당연스럽게도 var(변수)로 바꿔주면 문제는 발생하지 않는다.
앞으로 Decodable
프로토콜을 다룰 땐 이 문제를 숙지해야겠다.