OC学习-个人习惯记录

编程中总需要与服务器进行打交道,和服务器之间交互数据大部分都是封装成json数据,而json数据我们在解析的时候必须确定其类型才行,否则很多情况下都会出现解析错误问题;我就出现了很多次因为字段错误导致软件奔溃,有时候服务器进行数据升级,将某些字段升级了,而我这边没有进行严格的数据校验就导致解析出错了;


今天再一次的数据升级的时候,研究了下面对这种数据升级的时候怎么让程序不会因为字段名或者字段对应的内容类型改变而导致程序奔溃问题;


oc中有一个id类型,这种类型的数据可以变换成任何确定的类型数据,同时也能保证我们在不知道原数据类型的情况下使用它来取值,所以我们在解析服务器数据的时候尽可能的全部使用此类型进行取值,在保证值存在的前提下在确认数据类型;

在研究的过程中我发现NSDictionary字典类型,在取值的时候若对应的key不存在,只要你不将取出来的值指定类型就不会出现因找不到值软件奔溃问题,可以将值赋值给id类型对象,然后对id类型对象进行数据类型判断,借助函数isKindOfClass判断是否为需要的数据类型;

确定类型之后再进行类型确认,这样就保证了即使数据升级减少字段或者添加字段,以及将内容类型修改的时候软件也不会因为解析错误导致软件奔溃问题;


NSData* data = [jsonStr dataUsingEncoding:NSUTF8StringEncoding];

id tempData = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];

if ([tempData isKindOfClass:[NSDictionary class]]) {/*进行数据解析*/}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lock颠颠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值