2
사용자 정의 초기화 프로그램에서 모든 속성을 입력 할 필요없이 Codable
클래스를 모든 속성에 대해 decodeIfPresent
으로 사용하려면 어떻게해야합니까?codode의 모든 속성에 decodeIfPresent를 사용하는 방법은 무엇입니까?
예 :
class Book: Codable {
var name: String = "Default name"
var pages: Int = 1
required init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
for key in container.allKeys {
// What to do here to call decodeIfPresent?
}
}
}
본질적으로, 나는 그것이 작동하는 방법이 하나의 변화를 만드는 자동으로 생성 초기화 나 자신을 복제하고 싶습니다.
여기에서 달성하려는 것은 무엇입니까? 속성을 디코딩하는 단축키 또는 다른 것? –
@ItaiFerber 이상적으로, 디폴트로 (적어도 주어진 클래스/구조체에 대해) 기본값을 사용할 수있는 제네릭 솔루션. 'class Book : Codable, DecodableUsingDefaults {...} '와 같은 것입니다. – whistler
알았습니다. 그래, 그건 현재 가능하지 않다. 각 속성을 개별적으로 디코딩해야합니다. 현재 스위프트에서 일반화 할 수없는 속성을 설정해야하기 때문에 의미있는 방법으로 사용 가능한 키를 반복 할 수 없습니다. –