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]]) {/*进行数据解析*/}


你可能感兴趣的:(OC学习-个人习惯记录)