美文网首页
iOS开发中,数组为空的判断处理

iOS开发中,数组为空的判断处理

作者: 坤哥lqk | 来源:发表于2017-03-14 14:49 被阅读65次

这篇文章主要来说一下,NSArray判断是否为空需要注意的问题。

有些开发者,在判断数组是否为空时,会写成:

if (array != nil)

或是:

if (array.count != 0)

其实严格来说,这两种写法,都是考虑不足并且不稳定的,并且忽略了一种更常见的情况。

首先来说一下,二者之间的区别。

array == nil

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

array.count == 0

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

而事实上,如果你是处理网络请求的数据,取出的array是nil对象是几乎不可能的(至少我没遇到过),多数情况下会出现的是另一种情况:

取到的array是一个NSNull对象。

NSNull是一个特殊的类,它和nil一样,也代表空值,但二者有区别,NSNull不接收NSArray的那些方法,它只有一个类方法:

+ (NSNull *)null;

因此发送NSArray特有的方法或属性访问都会导致程序crash。

我们做空值判断的很大一部分原因就是为了在后台接口数据返回一些异常数据的时候,程序能保证稳定性。

举个例子:某些情况下,后台可能由于各种原因,对某个字段返回了null值,这时我们取到的就是[NSNull null]这样一个对象,再比如说,后台可能对某一个数据取值,但取到了0个,这时返回的是一个空组,我们取到的就是@[],空组。

因此判断数组是否为空,需要对各种情况都进行判断。

写法有很多种,比如你可以写成:

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

如果有不对的地方,欢迎指正。

相关文章

  • iOS开发中,数组为空的判断处理

    这篇文章主要来说一下,NSArray判断是否为空需要注意的问题。 有些开发者,在判断数组是否为空时,会写成: if...

  • 在公司中要判断数组为空的情况

    在公司中 遇到数组为空的情况下 ,要处理。 1.js判断数组为空 在数组直接与布尔类型比较的时候,默认都是将数组和...

  • iOS开发判断数组是否为空

    前言:AFNetworking是我们常用的三方库,我们需要对请求下来的responceObject进行操作,很多时...

  • 判断数组为空 iOS

    1.判断数组为空if (array != nil && ![array isKindOfClass:[NSNull...

  • ios 判断数组为空

  • iOS 中的几个Null

    在iOS开发中通常碰到一个问题,就是空。比如说空字符串。当我们在处理或者判断一个对象是不是为空的时候,该如何处理呢...

  • iOS开发对象判空

    iOS 开发之对象为空的判断(nil、null)详解 在开发中,会遇到很多空的情况,有时候取得对象(null),还...

  • IOS数组为空的处理

    某些情况下,后台可能由于各种原因,对某个字段返回了null值,这时我们取到的就是[NSNull null]这样一个...

  • JavaScript 数组常用方法

    平时开发中,经常需要对数组进行处理,因此做下总结,便于日后查阅。 1.判断元素是否为数组: (1)typeof a...

  • IOS 数组判断是否为空

    本篇为自学笔记 记录一下 用到判断数组是否为空的时候发现了 直接进行 Array != nil 结果发现是错误的 ...

网友评论

      本文标题:iOS开发中,数组为空的判断处理

      本文链接:https://www.haomeiwen.com/subject/grchnttx.html