nixzhu / Baby

Create models from a JSON file, even a Baby can do it.
https://apps.apple.com/cn/app/ducky-model-editor/id1525505933
MIT License
222 stars 21 forks source link

能否增加个可选功能, 来生成 init(from decoder: Decoder) throws 的实现 #17

Closed SuperY closed 6 years ago

SuperY commented 6 years ago

个别参数需要异常判断

required public init(from decoder: Decoder) throws {
        let map = try decoder.container(keyedBy: CodingKeys.self)
//        do{
//            self.message  = try map.decode(String.self, forKey: .message)
//        }catch {
//            self.message  = ""
//        }

        self.subject  = try map.decode(String.self, forKey: .subject)

        self.dateline  = try map.decode(String.self, forKey: .dateline)        
        self.tid  = try map.decode(String.self, forKey: .tid)
        self.uid  = try map.decode(String.self, forKey: .uid)
        self.applyid  = try map.decode(String.self, forKey: .applyid)
        self.verified  = try map.decode(String.self, forKey: .verified)
 }
nixzhu commented 6 years ago

看样子你的 message 用可选值更好,如let _message: String?,注意CodingKeys,再定义一个计算属性即可var message: String { return _message ?? "" }

SuperY commented 6 years ago

仔细想了下你的方案可行,成本更低