Json 转 Model 后,接下来要做的事情
Json转model已是很常见的事情,优秀的第三方库也很多,如YYModel等
本文以YYModel为例,在它的基础上,扩展成一个在项目中使用的Model基类。Model基类内置了开关,可对一些常见的对象类型的实例初始化为“空值”(例如,NSString类型赋值为@””,NSArray类型赋值为@[]),这样的做法有2优点:
1、方便,省去了在项目中判断是否为nil的情况
2、安全,避免了一些不必要的异常
核心代码1:
1 | -(NSString *)getPropertyType:(objc_property_t)property { |
把 objc_property_t 类型格式化整理为NSString类型,以方便后续的操作。代码里面的处理做法,在网上参考比较了几种做法,最后发现,还是YYmodel作者的做法最为细腻。取其精华,加工后完成。
核心代码2:
1 | -(void)setSafeValue{ |
代码里面预告设置NSString,NSNumber,NSArray这三种类型的默认值分别为:
@””,@(0),@[]。
思路上采用预先设置默认值到NSDictionary里,这样查找赋值的时间复杂度就为o(1)。函数方法里面有一个在属性数组里操作的情况,因此,总体的时间复杂度为o(n)。
在接口方面比较灵活,默认是不做转换的,避免了一些隐形操作导致的不安全感。需要打开时,在子类中重载方法即可:
1 | -(NCBaseModelSafeType)safePropertyType{ |
源码链接NCBaseModel