用([array count]==0 )来判断是否为空,都是坑,如果array为空的话,执行count就会直接报错,程序崩溃退出。

正确判断NSArray是否为空的方法:

if(array != nil && ![array isKindOfClass:[NSNullclass]] && array.count !=0){

  //执行array不为空时的操作

}

1)realData == nil   这种情况指的是这个realData对象是一个nil对象,而不是一个NSArray类型对象。nil对象是一个可以接收任何消息的对象,它可以赋值给任何一个对象,你对它发消息也没什么问题,尽管你得不到你想要的结果​。​

(2)realData.coun​ == 0   这种情况跟上一种不同的在于,此时的array是一个NSArray类型对象,只不过这个array里面没有元素。但它本身是可以作为NSArray对象来使用的​

而事实上,如果你是处理网络请求的数据,取出的realData是nil对象是几乎不可能的(至少我没遇到过),多数情况下会出现的是另一种情况: 取到的realData是一个NSNull对象。 NSNull是一个特殊的类,它和nil一样,也代表空值,但二者有区别,NSNull不接收NSArray的那些方法,它只有一个类方法:   

+ (NSNull *)null;​因此发送NSArray特有的方法或属性访问都会导致程序crash。​

我们做空值判断的很大一部分原因就是为了在后台接口数据返回一些异常数据的时候,程序能保证稳定性。  举个例子:某些情况下,后台可能由于各种原因,对某个字段返回了null值,这时我们取到的就是[NSNull null]这样一个对象,再比如说,后台可能对某一个数据取值,但取到了0个,这时返回的是一个空组,我们取到的就是@[],空组。​

iOS判断数组不为空的更多相关文章

  1. iOS 判断数组是否为空

    有人说可以用([array count]==0 )来判断是否为空,都是坑,如果array为空的话,执行count就会直接报错,程序崩溃退出. 正确判断NSArray是否为空的方法:用 (!array) ...

  2. iOS 判断数组不为空

    if (array != nil && ![array isKindOfClass:[NSNull class]] && array.count != 0)

  3. php 判断数组是否为空的几种方法

    php数组为空我们可以通过很多php自带函数来实现了,比如count函数,empty函数等都可以判断数组是否为空,下面小编就为各位整理了不少的判断数组是否为空的函数,希望对各位会带来帮助. PHP判断 ...

  4. jquery 判断数组是否为空

    jquery 判断数组是否为空 if (data.length === 0) { console.log("数组为空"); }

  5. IOS判断NSArray是否为空

    场景描述:判断一个集合是否为空,如果不为空执行A,如果为空执行B Java实现方法 public void exec(){ List<String> list = this.getCont ...

  6. PHP 判断数组是否为空的5大方法

    1. isset功能:判断变量是否被初始化 说明:它并不会判断变量是否为空,并且可以用来判断数组中元素是否被定义过 注意:当使用isset来判断数组元素是否被初始化过时,它的效率比array_key_ ...

  7. iOS 判断字符串是否为空

    写一个字符串的扩展,实现判断字符串是否为空- (BOOL) isBlankString { if ([self isEqualToString:@"(null)"]) { retu ...

  8. iOS 判断数组array中是否包含元素a,取出a在array中的下标+数组方法详解

    目前找到来4个解决办法,第三个尤为简单方便 NSArray * arr = @["]; //是否包含 "]) { NSInteger index = [arr indexOfObj ...

  9. Java中判断数组是否为空

    一维数组// 一维数组: int[] arrayif(array == null || array.length == 0)    return true; 二维数组//二维数组: int[][] a ...

随机推荐

  1. JS動態綁定下拉單內容

    function req00_Line1_onChange(obj) {     //if ($(obj).val() != "" && $(obj).val() ...

  2. 【转】如何在Mac系统中安装R的rattle包

    [转自知乎]:https://www.zhihu.com/question/28944497 1. 安装 xquartz (http://xquartz.macosforge.org)2. 安装 GT ...

  3. 关于shape_trans (ConnectedRegions, ConvexRegions, 'convex')的作用于对比

    * crystal.hdev: extraction of hexagonally shaped crystals via local thresholding and region post-pro ...

  4. DGV表头双行

    try { if (e.RowIndex < 0) { RectangleF _rect = e.CellBounds; Pen _pen = new Pen(Color.Black); Pen ...

  5. 线程小demo

    下午就手写了两个demo,整理了一下. #!/sur/bin/env python # -*- coding:utf-8 -*- __author__ = 'ganzl' import threadi ...

  6. [转]Android音频底层调试-基于tinyalsa

    http://blog.csdn.net/kangear/article/details/38139669 [-] 编译tinyalsa配套工具 查看当前系统的声卡 tinymix查看混响器 使用ti ...

  7. 什么是业务运维,企业如何实现互联网+业务与IT的融合

    业务运维并不是一个新概念,针对传统信息架构提出的业务服务管理就是把以业务为核心的IT系统与IT基础设施性能进行整合运维的解决方案.然而随着互联网+转型的不断推进,基础设施的智能化和广泛云化成为IT发展 ...

  8. [2015hdu多校联赛补题]hdu5301 Buildings

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5301 题目大意:给你一块由1x1方格组成的矩形区域,其中有且仅有一个坏块,现在你要在上面建矩形的房子, ...

  9. c++总结01

    今天编写了四个小程序分别是“石头剪刀布游戏”“数字之间加空格输出”“蛇形矩阵”“螺旋矩阵”. 通过编写石头剪刀布代码 熟悉了switch语句和if语句的使用,同时也运用了do..while语句,其中 ...

  10. myeclipse 手动安装 lombok

    1. 将 lombok.jar 复制到 myeclipse.ini / eclipse.ini 所在的文件夹目录下    2. 打开 eclipse.ini / myeclipse.ini,在最后面插 ...