后台接口的坑&容错处理

2017-08-02  本文已影响158人  dvlproad
坑1:给你看似"正确的值",但类型错误,需要仔细观察,后根据类型操作

给你看似"正确的值",但类型错误,如图:


给你看似"正确的值",但类型错误.png

如图,当你没注意到类型已经变化的时候,如果这是你还采用for语句去获取你认为还是数组的client_menu的时候,就基本上会出现崩溃了。所以,如果遇到崩溃的时候,还需需要仔细检查返回的类型是否有问题(自己之前就遇到过测试环境和正式环境返回的类型不一样的问题,而导致崩溃)。

NSMutableArrayNSMutableDictionary一个是可变数组,一个是可变词典,两者都可以通过for语句来取值。

for (<#type *object#> in <#collection#>) {
    <#statements#>
}

不同的是,
①可变数组NSMutableArray通过for (<#type *object#> in <#collection#>) 时,取到的object就是数组里的元素
②而可变词典NSMutableDictionary通过for (<#type *object#> in <#collection#>) 时,取到的object就是词典里的key

附:NSMutableDictionary的枚举方法

//一般枚举方法
NSArray *keys = [dic allKeys];
NSInteger length = [keys count];
for (NSInteger i = 0; i < length;i++) {
     id key = [keys objectAtIndex:i];
     id obj = [dic objectForKey:key];
     NSLog(@"%@", obj);
}

//快速枚举方法
for (id key in dic) { //注意这里取到的object就已经是key了
     id obj = [dic objectForKey:key];
     NSLog(@"%@", obj);
}

//通过枚举类型枚举
NSEnumerator *enumerator = [dic keyEnumerator];
id key = [enumerator nextObject];
while (key) {
        id obj = [dic objectForKey:key];
        NSLog(@"%@", obj);
        key = [enumerator nextObject];
}
坑2:服务器返回数据看起来一样,实际多了写没用的特殊字符,需要去掉

如果我们的后台接口返回的数据有加密,那我们自然要对加密的数据进行解密,但解密之前,我们必须先确保服务器返回的数据没有多余的特殊字符,否则会解密失败。
下面这个例子,是测试环境的时候我们去掉了多余的\n,但是正是环境的时候却发现还有\r要去掉。之前就是没发现服务器返回的数据不一样(虽然可能看起来一样,但是多了特殊字符),而导致的错误。所以这里我们把所有的特殊字符\r\n都去掉即可。

686CF33F-4E32-43C7-A5D4-37F8D19B524C.png
坑3:待补充

容错处理

其他容错处理运用runtime黑魔法,异常处理等就可以处理了,老生常谈,就不详细介绍了。
以下是一个参考例子: ios 容错处理JKDataHelper和AvoidCrash

完!

上一篇 下一篇

猜你喜欢

热点阅读