intsig171 / SmartCodable

SmartCodable is a data parsing library based on Codable. It is simple to use, with robust compatibility being one of its main features. SmartCodable 是基于Codable实现的数据解析库。简单易用,强悍的兼容性是SmartCodable的主要特点。 表层API和功能几乎和HandyJSON一致,支持快速的迁移。
https://smart-codable.vercel.app
MIT License
417 stars 43 forks source link

为何继承类型 调用deserialize(from: dict)会失败 #28

Closed alfei13 closed 5 months ago

alfei13 commented 5 months ago

业务类的模型 继承自基类模型,这样情况想调用deserialize转换出来的就全是nil,麻烦大佬指点下

alfei13 commented 5 months ago

是否能像Handlyjson一样,不管是不是继承的model类,都能转换成功呢?

intsig171 commented 5 months ago

只要遵循了SmartCodable,就可以解析的。 不过继承的支持力度不够。 系统的Codable需要子类中重写init(decoder:)方法,并调用super.init(decoder). 详细见readme中的suggest模块的问答。

综合: 不建议使用继承来处理数据解析。 有任何问题可以加QQ群(readme最下面有QQ群截图)

alfei13 commented 5 months ago

原项目中基本都是继承自基类的,您意思是子类模型也要再次继承SmartCodable 就能解析么?

intsig171 commented 5 months ago

继承的实现比较麻烦,我在 继承 中有说明。

建议使用协议替代继承。 将公共的一些属性声明到一个协议中, 各个Model继承该协议,自然带有了公共的属性。

alfei13 commented 5 months ago

好的👌🏻,感谢大佬解惑;