YYModel详解(二)

modelPropertyBlacklist和modelPropertyWhitelist

modelPropertyBlacklist:黑名单-》不会处理改列表内的数据

modelPropertyWhitelist:白名单-》处理改列表之内的数据

直接上代码


figure1

数据校验与自定义

当我们去从后台返回的数据不符合我们要求时,我们可以在model中完成相应的数据转化逻辑的操作,需要知道下面两个方法:

modelCustomTransformFromDictionary:从后台数据转化为我门需要的数据,进行校验

modelCustomTransformToDictionary:从model数据类型转化为son数据类型,进行校验

直接上代码:

figure2

将NSInteger转化为NSDate类型,相应的解释和代码

figure3

Coding/Copying/hash/equal/description

当涉及到copy的属性描述时,我们需要加上如下的代码:

figure4

可以写成如下的一段代码:

#define YYModelSynthCoderAndHash \

- (void)encodeWithCoder:(NSCoder *)aCoder { [self yy_modelEncodeWithCoder:aCoder]; } \

- (id)initWithCoder:(NSCoder *)aDecoder { return [self yy_modelInitWithCoder:aDecoder]; } \

- (id)copyWithZone:(NSZone *)zone { return [self yy_modelCopy]; } \

- (NSUInteger)hash { return [self yy_modelHash]; } \

- (BOOL)isEqual:(id)object { return [self yy_modelIsEqual:object]; }

如此这般,你只需要将YYModelSynthCoderAndHash,引用到相应的代码中直接使用,是不是简单很多


2.性能分析过程,和主要比对的解析库

第一:从 https://api.github.com/users/facebook 获取的一条 User 数据,只是包含简单的NSString少量是 number,大概时50行代码,执行10000次,其中YYModel所用的时间时最少的

figure5

第二:完整的微博数据进行解析,包含复杂的嵌套、嵌套对象、容器对象、类型转换、日期解析,JSON 总共有 580 行,各执行1000次,并得出YYModel时耗时最少的

figure6

得出结论:YYModel的性能时最高的

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容