美文网首页
IOS数组为空的处理

IOS数组为空的处理

作者: rectinajh | 来源:发表于2017-09-26 16:49 被阅读107次

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

取到的array是一个NSNull对象。

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

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

比如这种情况:
(
"<null>",
"<null>",
"\U516c\U5171\U53f7",
"\U738b\U4e91\U9f99",
"\U6768\U4e3d\U8bda"
)

如果是给你一个tableview赋值,用数组的方式indexpath.row 读取赋值就会崩、

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

这样就确保了数组不是nil对象,也不是NSNull对象,并且至少有一个元素的。

简写的判断:
if ([array isKindOfClass:[NSArray class]] && array.count > 0) {

}

首先我们要确保返回数据的确是数组NSArray类型的,其次保证数组中至少包含有一个元素。当然,需不需要对数组的元素个数做出判断,可以视情况而定。但必须确保是NSArray类型,而非NSNull等其他类型。

解决方案:

用了一个Category,叫做NullSafe 。

NullSafe思路:在运行时操作,把这个讨厌的空值置为nil,而nil是安全的,可以向nil对象发送任何message而不会奔溃。这个category使用起来非常方便,只要加入到了工程中就可以了,你其他的什么都不用做,很简单。

用法:
To use NullSafe, just drag the NullSafe.m file into your project. NullSafe will be automatically loaded at runtime, you don't need to include any header files in your code.
直接拖到到工程中,就可以避免崩溃了。

下载地址
https://github.com/nicklockwood/NullSafe

相关文章

  • IOS数组为空的处理

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

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

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

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

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

  • 判断数组为空 iOS

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

  • ios 判断数组为空

  • iOS中异常处理机制使用小结

    在iOS开发中经常会由于数组越界,添加数据为空,通信或者文件错误,内存溢出导致程序终端运行而引入异常处理机制。常用...

  • IOS 数组判断是否为空

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

  • iOS_判断数组为空

    //判断数组 if(self.dataArray!=nil&&![self.dataArray isKindOfC...

  • 处理数组空值

    前言:大家是不是经常很头疼数据中存在一些诸如undefined、null等字符的情况呢?本文介绍如果快速过滤掉这些...

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

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

网友评论

      本文标题:IOS数组为空的处理

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