TroubleShooting

[Swift] Codable은 클래스 정의할 때 채택시키자

Phililip 2025. 1. 16. 01:40
728x90

안녕하세요.

 

Swift 클래스에는 Designated initializer와 Convenience initializer가 있어요.

(Designated initializer와 Convenience initializer를 모르시는 분은 아래 글을 참고해 주세요~!)

 

클래스(class type) 생성자에 대해 알아보자

안녕하세요. 이전에 구조체 생성자에 대해 알아봤어요. 오늘은 클래스 생성자를 공부할게요ㅎ # 1. Designated initializer, Convenience initializer Designated initializer는 해당 클래스의 모든 property(부모 클래

phillip5094.tistory.com

 

이때.. Codable을 아래처럼 클래스 extension에다가 채택시키면 Designated initializer cannot be declared in an extension of 'MyCodableClass'; 라는 에러가 발생합니다.

 

 

그 이유는 해당 클래스의 interface를 보면 알 수 있어요.

 

Decodable의 Designated initializer가 extension에 구현되기 때문에, Swift 클래스의 Designated Initializer는 extension에서 구현할 수 없다는 조건에 걸리게 되는 것이죠.

(왜 구현할 수 없는지에 대해선 아래 글을 참고해 주세요!)

 

Designated initializer cannot be declared in an extension

안녕하세요. Swift를 사용해 보셨다면, 이런 에러를 몇 번 보셨을 거예요.  Designated initializer cannot be declared in an extension of 'SomeClass'; did you mean this to be a convenience initializer?  그 이유는 Swift가 exte

phillip5094.tistory.com

 

즉, 아래처럼 클래스 정의 시점에 Codable 프로토콜을 채택시켜 주는 것이 안전할 것 같아용.

 


이번 글은 여기서 마무리.

 

 

 

반응형