Swift 4는 새로운 Codable
프로토콜을 추가했습니다 . 사용할 때 JSONDecoder
내 Codable
클래스 의 모든 비 선택적 속성이 JSON에 키를 갖도록 요구하거나 오류가 발생합니다.
내 클래스의 모든 속성을 선택적으로 만드는 것은 json의 값이나 기본값을 사용하는 것이기 때문에 불필요한 번거 로움처럼 보입니다. (저는 속성이 0이기를 원하지 않습니다.)
이 작업을 수행하는 방법이 있습니까?
class MyCodable: Codable {
var name: String = "Default Appleseed"
}
func load(input: String) {
do {
if let data = input.data(using: .utf8) {
let result = try JSONDecoder().decode(MyCodable.self, from: data)
print("name: \(result.name)")
}
} catch {
print("error: \(error)")
// `Error message: "Key not found when expecting non-optional type
// String for coding key \"name\""`
}
}
let goodInput = "{\"name\": \"Jonny Appleseed\" }"
let badInput = "{}"
load(input: goodInput) // works, `name` is Jonny Applessed
load(input: badInput) // breaks, `name` required since property is non-optional