iOS解析服务器返回数据遇到的几个梗

前言:iOS开辟中,一般景况下大家愿意后台服务器都回到字符串给大家(我们一直动用NSString
*)类型的变量来接收….然则,后台boy们,总是喜欢自由重回各体系型的数据.曾经本身和后台协商过频仍,希望她们一切用字符串重返,然则他们说,有的数据他们不佳转换为字符串类型.于是回来的多寡都以各系列型.那么上面包车型大巴梗来了…

  1. 后台重返数值型数据给大家,而笔者辈不驾驭数据类型时,使用NSString来选取比如后台再次回到的json数据是

data:{peopleNum:12345 price:200}

其间peopleNum和price均是数值型,大家现在来剖析他们(先假使有2个label用来体现那2个数据)

NSString *peopleNum=dict[@"peopleNum"];NSString *price=dict[@"price"];self.labPeopleNum.text=peopleNum;self.labPrice.text=price;

您会开采,程序实行到self.labPeopleNum.text=peopleNum;
那行代码的时候,崩溃了…并报上面包车型大巴错误reason: ‘-[__NSCFNumber
rangeOfCharacterFromSet:]: unrecognized selector sent to instance

图片 121_390579_3a74476498d4a64.png

咱俩大约剖析下这几个荒唐产生的来由:这一个指鹿为马是说…NSNumber类型的变量未有rangeOfCharacterFromSet这么些措施的定义….那么大家稳重查看开采:
rangeOfCharacterFromSet那一个艺术是NSString的方法…回过头来,大家在赋值peopleNum给labPeopleNum.text的时候,其实底层就做了一遍那么些rangeOfCharacterFromSet方法,造成了崩溃…

总括:深究此处的因由是何许啊??
那就是因为后台重临的peopleNum数据是数值型数据,不是字符串…..到大家客商端今后吧,我们会把数值型数据调换为NSNumber类型的数据…由此应该修改下方面的代码,把摄取到的peopleNum调换为NSString类型就能够:

NSNumer *peopleNum=dict[@"peopleNum"];NSNumer *price=dict[@"price"];self.labPeopleNum.text=[NSString stringWithFormat:@"%@",peopleNum];self.labPrice.text=[NSString stringWithFormat:@"%@", price];

2.后台湾大学咖们,还日常喜欢再次回到NULL数据给大家,然后造成崩溃.不驾驭咱们有未有备受其害哈….管理那一个主题材料的措施相当多了,<1>假如您是用AFNetWorking的话,能够看下上边:

/** Whether to remove keys with `NSNull` values from response JSON. Defaults to `NO`. */@property (nonatomic, assign) BOOL removesKeysWithNullValues;

那便是说大家只要把这一个removesKeysWithNullValues=YES.那样的话,后台重回的JSON数据中空的键值对,将会被活动删除,可以幸免我们对这么些空值做操作,造成崩溃难点<2>还也可能有一种正是gitHub上相比较盛行的NullSafe了,然而本身还没用过那一个哈..

3.还想说个相比较深远的难点,不知情周围iOS开拓者,你们以往的”上拉下拉刷新”使用的是怎么的机制…假令你公司使用的是”page-limit计策”,那么就恭喜您中奖了(恐怕你公司的测量试验会来找你的劳动)…有的人,笔者上拉加载数据的时候,page++,然后访谈服务器拿新的limit条数据,那并未有怎么难点呀??

实际上这一个难题呢,和我们顾客端没什么大的关系,那几个好不轻便后台在虚拟列表难点上的不圆满可是细的标题…上面来剖析下如此做会境遇怎样难题吗:当我们在展现完page=1的时候,大家正计划上拉加载越多的时候,此时服务器数据库中在那前10条数据中新插入了一条数据…那儿大家上拉加载越来越多,你会发觉出现了2个数据一致的Cell.

小结:其实这里就是接纳”page-limit”战术形成的难题了,因为服务端不常有新的数额插入,导致数据加多,我们page++的时候,正好把前page的第limit数据挤到page+1上了..造成了多少重复展现

那就是说怎么消除那一个标题吗??其实服务端应该利用”id++”的攻略来缓慢解决这几个主题材料,正是每趟从三个id初步,将来恳请”limit条”数据回来…

PS:每一日一篇小说,记录iOS开拓的一丝一毫,喜欢我的稿子,就点击”关怀自个儿”吧…

相关文章