iOS 空数组的处理
来源:互联网 发布:mac和虚拟机共享文件 编辑:程序博客网 时间:2024/06/16 12:28
在iOS开发过程中,避免不了要从远程请求数据。有时候我们拿到的可能会是一个空得数组(当然返回nil的可能小很小)。那么就必要对其进行非空判断,以确保我们项目的稳定性。
假设我们从远程请求到一组数据array,一般会这样处理:
NSArray *array = /***/; if (!array) { } else { }
或者
if (array.count == 0) {} else {}
!array
或者array == nil
意味array
是一个空得对象,而不是一个NSArray
类型的对象。在OC中给一个nil
的对象发送消息是没错的,比如在非ARC模式下,我们常常会对一个销毁过后的对象采取这样操作,以防止野指针异常。array.count == 0
意味array
已经确认是一个NSArray
类型的对象,不过它的元素个数为0,即数组中没有元素的,这个比较好理解。
其实这样判断是不够全面的。因为我们在处理网络请求的数据时,获取到的很有可能是一个NSNull
对象,在控制台上显示为<null>
。这个类较为特殊,它和nil的意思一样,都是代表数组为nil,但它只有一个类方法+(NSNull)null
,也就是说它并不会接受数组的那些方法。如果我们在返回为<null>
的时候访问NSArray
的方法或者属性都是不被允许的,将会导致程序崩溃。
经过上面的分析我们知道,在处理数组的时候,就有必要考虑到<null>
这种情况。
if (![array isKindOfClass:[NSNull class]] && array.count > 0 && array != nil) {}
这样就确保了数组不是nil
对象,也不是NSNull
对象,并且至少有一个元素的。
但这样的判断条件,看起来太繁琐了,有没有简单的点呢?当然有。 array.count > 0
其实就包含了array != nil
这种情况。那么就可以用更简便的方式去判断数组非空的情况。
if ([array isKindOfClass:[NSArray class]] && array.count > 0) {}
首先我们要确保返回数据的确是数组NSArray
类型的,其次保证数组中至少包含有一个元素。当然,需不需要对数组的元素个数做出判断,可以视情况而定。但必须确保是NSArray
类型,而非NSNull
等其他类型。
- iOS 空数组的处理
- iOS开发中,数组为空的判断处理
- iOS开发 对数组为空的处理
- iOS开发数组为空的判断处理
- iOS 判断数组为空
- "IOS"空件TableView中,字典,数组的套用........
- IOS中字符串与数组的处理
- JSON数组在iOS的处理
- IOS中字符串与数组的处理
- IOS中字符串与数组的处理
- IOS中字符串与数组的处理
- 空数组的内存空间
- 空数组的优势
- 空数组[]的特殊性
- iOS如何正确清空数组
- ios开发 数组中添加空对象
- iOS 判断数组是否为空
- iOS开发- 处理空字符串
- 日拱一卒——160个crackme之#6
- 不要在使用Sleep等待线程结束,不要在线程中操作界面
- Android 官方 switch 控件更改选中色
- JavaScript基础小结
- mysql 格式化日期
- iOS 空数组的处理
- Android7.0中文API -- AbsSpinner
- pthread_create线程相关函数
- Groovy基础篇
- Caffe
- Maven打包无法依赖其他war包
- 关于java多线程浅析六: CyclicBarrier的原理分析和使用
- dubbo官网实例实现
- HttpClient_4 用法 由HttpClient_3 升级到 HttpClient_4 必看