IOS数组为空的处理

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

取到的array是一个NSNull对象。

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

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

比如这种情况:
(
"",
"",
"\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数组为空的处理)