modelPropertyBlacklist和modelPropertyWhitelist
modelPropertyBlacklist:黑名单-》不会处理改列表内的数据
modelPropertyWhitelist:白名单-》处理改列表之内的数据
直接上代码
数据校验与自定义
当我们去从后台返回的数据不符合我们要求时,我们可以在model中完成相应的数据转化逻辑的操作,需要知道下面两个方法:
modelCustomTransformFromDictionary:从后台数据转化为我门需要的数据,进行校验
modelCustomTransformToDictionary:从model数据类型转化为son数据类型,进行校验
直接上代码:
将NSInteger转化为NSDate类型,相应的解释和代码
Coding/Copying/hash/equal/description
当涉及到copy的属性描述时,我们需要加上如下的代码:
可以写成如下的一段代码:
#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所用的时间时最少的
第二:完整的微博数据进行解析,包含复杂的嵌套、嵌套对象、容器对象、类型转换、日期解析,JSON 总共有 580 行,各执行1000次,并得出YYModel时耗时最少的
得出结论:YYModel的性能时最高的