iOS摸鱼周报 第六期

本文是iOS摸鱼周报,分享开发经验、编程概念、优秀博客和学习资源。内容涵盖YYModel默认值设定、iOS11架构调整、关系型与非关系型数据库介绍、ACID原则解析以及数据库索引等。同时推荐了F.lux、Kap等实用工具。
摘要由CSDN通过智能技术生成

iOS摸鱼周报,主要分享大家开发过程遇到的经验教训及学习内容。虽说是周报,但当前内容的贡献途径还未稳定下来,如果后续的内容不足一期,可能会拖更到下一周再发。所以希望大家可以多分享自己学到的开发小技巧和解bug经历。

周报仓库在这里:https://github.com/zhangferry/iOSWeeklyLearning ,可以查看README了解贡献方式;另可关注公众号:iOS成长之路,后台点击进群交流,联系我们。

开发Tips

开发小技巧收录。

YYModel解析数据提供默认值

当在OC中使用YYModel解析JSON数据时,对于不存在或者返回null的数据都会按照nil处理。而有些时候我们可能不希望该字段被置为nil,而是希望提供一个默认值,比如NSString类型,如果无法解析就返回@"",空字符串。这在一些需要把特定参数包到NSDictionary或者NSArray里的场景不会引起崩溃,也省去了一些判断判空的代码。

实现这个目的需要两个步骤:

1、找到特性类型的属性

可以使用runtime提供的property_copyAttributeList方法,主要代码是:

objectivec static const char *getPropertyType(objc_property_t property) { //这里也可以利用YYClassPropertyInfo获取对应数据 unsigned int attrCount; objc_property_attribute_t *attrs = property_copyAttributeList(property, &attrCount); if (attrs[0].name[0] == 'T') { return attrs[0].value; } return ""; }

通过attrs[0].name[0] == 'T'找到对应属性的编码类型,取出value,NSString对应的value@"NSString"

其他的编码类型可以参考这里

找到需要替换的属性就可以替换了,使用KVC的形式:

objectivec [self setValue:obj forKey:propertyName];

2、在JSON换Model完成的时候进行默认值替换

这段函数写到哪里合适呢,在NSObject+YYModel.h里找到了这个方法:

objectivec - (BOOL)modelCustomTransformFromDictionary:(NSDictionary *)dic;

该方法用于校验转成的Model是否符合预期,执行到这里时Model已经完成了转换,我们就可以在这里调用上面写的默认值替换方法。

封装使用

我已经写好了一个实现,代码在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值