সুইফট 4 নতুন Codable
প্রোটোকল যুক্ত করেছে । আমি যখন ব্যবহার JSONDecoder
করি তখন মনে হয় আমার Codable
শ্রেণীর সমস্ত অ-alচ্ছিক বৈশিষ্ট্যগুলির JSON- এ কী থাকতে হবে বা এটি একটি ত্রুটি ছুঁড়েছে।
আমার শ্রেণীর প্রতিটি সম্পত্তি বৈকল্পিক করা অপ্রয়োজনীয় ঝামেলার মতো মনে হচ্ছে যেহেতু আমি যা চাই তা হল জেএসনের মান বা একটি ডিফল্ট মান। (আমি সম্পত্তিটি শূন্য করতে চাই না))
এই কাজ করতে একটি উপায় আছে কি?
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