后台接口的坑&容错处理

坑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

完!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,955评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,477评论 19 139
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 13,871评论 6 13
  • OC中的类分为可变和不可变。下表列出了Foundation框架中主要的可变类和不可变类: 种类 不可变类 可变类 ...
    陈_振阅读 3,570评论 0 0