解决从服务器获取的数组是 __NSCFConstantString以及""没有空格字符串的问题
AJ分享,必须精品
问题
项目遇到了个bug,从服务器获取到的数据是这样的
{
status = 1,
data = [
{
uid = 161,
type = 2,
id = 79,
addtime = 1447642148,
addtime_txt = 2,
…
}]
}
看着挺抽象的,意思就是我们访问后返还的数据中有一个status, 一个data的放着一堆字典的数组,但是。。。但是就是但是,本来如果是下面数组里没有数据的情况下,status的值会是0,然而判断status == 0 或者是用字符串的isEqualToString方法都不行,反正就是不能行不能行的。
并且,当status = 0 的时候, 地下的data数组的值是”“这样的一个字符串。。。。。。。 是的,没有看错,他是个字符串,我通过isa 还有强制转换等得到他的类型是 __NSCFConstantString 哦尼玛卖糕的,这什么鬼。。。并且这里你要是用[data isEqualToString:@”“] 这样判断,当他是空的时候没事,但是如果有值了就崩了,血崩,反过来,如果用别的方法,比如看他存在否,当没有的时候 也就是他是”“这个鬼的时候也会蹦,很见鬼。
解决
经过亿万个草泥马略过,反正最后我是参考android客户端兄弟的做法,直接判断数组的长度,但是这里有时候他不是数组 是__NSCFConstantString这个鬼。。。(人家java的数组如果不是数组类型啥的都会用空啥的东西表示,oc这表咋竟然就知道给我崩。。。血崩)
NSArray *dataArr = Data[@"data"];
NSLog(@"dataArr.class = %@", dataArr.class);
if ([dataArr isKindOfClass:[NSArray class]]) {
for (NSDictionary * dic in dataArr) {
attentionTerraceModel * model=[[attentionTerraceModel alloc] initWithDic:dic];
[_mary_data addObject:model];
}
}else {
UIAlertView *aleat=[[UIAlertView alloc] initWithTitle:@"提醒" message:@"暂无关注信息" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
[aleat show];
}
我是这样解决的,就是把它换成NSArray 然后看他到底是不是数组类型的,反正如果以后碰到类似的比如字典啊 字符串啊也可以试试,至于内部原理什么的AJ猜测了一些,这里就不乱说了,有懂得希望能赐教下,不胜感激!
解决从服务器获取的数组是 __NSCFConstantString以及""没有空格字符串的问题的更多相关文章
- 使用Dhcpstarv解决DHCP服务器冲突问题
场景: 内网环境需要开启多个DHCP服务器,分别给不同的设备进行PXE安装. 存在的问题: 多个DHCP的情况下,设备在启动时随机从一个DHCP服务器获取IP(哪个DHCP服务器先响应就从哪个获取)并 ...
- js 获取json数组里面数组的长度
作为一个前端页面开发者第一次处理json数据,遇到了‘js 获取json数组里面数组的长度’?竟然不知道 json没有.length属性(真是要嘲讽下自己),少壮不努力老大徒伤悲啊!以前都是去寻求男朋 ...
- vue单页应用中,使用setInterval()定时向服务器获取数据,后来跳转页面后,发现还在不停的获取数据。
使用VUE开发单页项目时遇到这样的问题,mounted中使用setInterval()定时向服务器获取数据,后来跳转页面后,发现还在不停的获取数据.我以为是因为我路由用的push导致的,改成repla ...
- 关于KMP算法中,获取next数组算法的理解
参考:KMP入门级别算法详解--终于解决了(next数组详解) https://blog.csdn.net/lee18254290736/article/details/77278769 在这里讨论的 ...
- android 从服务器获取新闻数据并显示在客户端
新闻客户端案例 第一次进入新闻客户端需要请求服务器获取新闻数据,做listview的展示, 为了第二次再次打开新闻客户端时能快速显示新闻,需要将数据缓存到数据库中,下次打开可以直接去数据库中获取新闻直 ...
- 终于解决了IE8不支持数组的indexOf方法,array的IndexOf方法
/* 终于解决了IE8不支持数组的indexOf方法 */ if (!Array.prototype.indexOf) { Array.prototype.indexOf = function (el ...
- nginx做反向代理负载均衡 Java怎么获取后端服务器获取用户IP
nginx做反向负载均衡,后端服务器获取真实客户端ip 首先,在前端nginx上需要做如下配置: location / proxy_set_hearder host ...
- windows phone 7 通过Post提交URL到服务器,从服务器获取数据(比如登陆时候使用)
原文:windows phone 7 通过Post提交URL到服务器,从服务器获取数据(比如登陆时候使用) HttpWebRequest myRequest = (HttpWebRequest)Web ...
- java服务器获取客户端ip
在写服务端代码时,有时需要对客户端ip做认证,比如限制只有某些ip能访问,或者1个ip1天只能访问几次.最近就碰到个需要限制ip的情况,从网上找了一些服务器获取客户端ip的方法,说的都不太完善,这里整 ...
随机推荐
- tcp上传大文件举例、udp实现qq聊天、socketserver模块实现并发
为什么会出现粘包现象(day31提到过,这里再举个例子) """首先只有在TCP协议中才会出现粘包现象,因为TCP协议是流式协议它的特点是将数据量小并且时间间隔比较短的数 ...
- drf-jwt的过滤,筛选,排序,分页组件
目录 自定义drf-jwt配置 案例:实现多方式登陆签发token urls.py models.py serializers.py views.py 案例:自定义认证反爬规则的认证类 urls.py ...
- [Docker4] Docker-machine进行多docker host管理
Docker Machine Docker machine就是自动化安装docker daemon Docker machine的provider docker machine provider 常见 ...
- abp(net core)+easyui+efcore实现仓储管理系统——入库管理之六(四十二)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...
- 详解firewalld 和iptables
在RHEL7里有几种防火墙共存:firewalld.iptables.ebtables,默认是使用firewalld来管理netfilter子系统,不过底层调用的命令仍然是iptables等. fir ...
- Python第四章-流程控制
流程控制 在以前的代码中,所有的代码都是交由 Python 忠实地从头执行到结束.但是这些远远不够.很多时候需要根据不同的情况执行不同的代码. 如果你想改变这一工作流程,应该怎么做? 就像这样的情况: ...
- 02 Python函数与模块
• 函数是什么 print() input() format() list() lower() upper() • 函数的定义 def 函数名(形参1,2,3) 函数体 return • 函数 ...
- VBScript 打开含有"空格"的路径 (Open Path with Space)
记录,VBScript 如何打开,含有"空格"的路径.这个问题和常见,却总是忘! 直接上代码了,多说无益. Option Explicit Dim obj Dim path Set ...
- RabbitMQ AMQP 事务机制
1,在之前的文章中介绍了RabbitMQ的五种队列形式 其中,在工作队列中,为了保证消费者的公平性,采用了channel.basicQos(1),保证了每次只发一条消息给消费者消费,并且使用手动签收的 ...
- 数据分析_numpy_基础1
数据分析_numpy_基础1 创建数组 方法 说明 np.array( x ) 将输入数据转化为一个ndarray| np.array( x, dtype ) 将输入数据转化为一个类型为type的nd ...