YYModel详解(二)

modelPropertyBlacklist和modelPropertyWhitelist

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

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

直接上代码


YYModel详解(二)_第1张图片
figure1

数据校验与自定义

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

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

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

直接上代码:

YYModel详解(二)_第2张图片
figure2

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

YYModel详解(二)_第3张图片
figure3

Coding/Copying/hash/equal/description

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

YYModel详解(二)_第4张图片
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所用的时间时最少的

YYModel详解(二)_第5张图片
figure5

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

YYModel详解(二)_第6张图片
figure6

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

你可能感兴趣的:(YYModel详解(二))