안녕하세요.
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 프로토콜을 채택시켜 주는 것이 안전할 것 같아용.
이번 글은 여기서 마무리.
'TroubleShooting' 카테고리의 다른 글
[Unity] Undefined symbols for architecture arm64: (0) | 2025.03.12 |
---|---|
fatal: bad config variable 'gpg.format' (0) | 2025.02.02 |
[Xcode 16] `force_encoding': can't modify frozen String (FrozenError) 해결방법 (0) | 2024.09.27 |
[Xcode 16] RuntimeError - `PBXGroup` attempted to initialize an object 에러 해결방법 (2) | 2024.09.27 |
[iOS] AOD 기능 여부에 따라 화면 App lifecycle 이벤트가 다르게 발생한다. (2) | 2024.09.26 |