iOS 开发之对象为空的判断(nil、null)详解
在开发中,会遇到很多空的情况,有时候取得对象(null),还有时候会得到<null>的情况,我们需要判断是否为空,进行return;
id result;
// 针对(null)这种情况
if(result == nil) return;
// 针对<null>的情况
if([result isEqual:[NSNull null]]) return;
前者的判断,我们用的比较频繁,但后者,用的比较少,一般赋值给nil之外的其他空值;
基本数据类型的空值判断
对于类似于NSString类型的数据进行空值判断
NSString *string;
string == nil;
[string isEqualToString:@""];
对于类似于NSNumber类型的数据进行空值判断
NSNumber *number;
number == nil;
[number isEqualToNumber:@0]
对于类似于NSArray类型的数据进行空值判断
NSArray *array;
array == nil;
array.count = 0;
对于类似于NSDictionary类型的数据进行空值判断
NSDictionary *dictionary;
[dictionary isEqual:[NSNull null]];
dictionary.count = 0;
对于对象类型的数据进行空值判断
可以使用 !(非) 来判断
if(!class) return;
判断对象是否为空(nil、NSNil、@""、@(0) 以上4种)
@interface NSObject (XL)
/**
* 判断对象是否为空
* 常见的:nil、NSNil、@""、@(0) 以上4种返回YES
* 如果需要判断字典与数组,可以自行添加
* @return YES 为空 NO 为实例对象
*/
+ (BOOL)isEmpty:(id)object;
@end
@implementation NSObject (XL)
+ (BOOL)isEmpty:(id)object{
if (object == nil || [object isEqual:[NSNull null]]) {
return YES;
} else if ([object isKindOfClass:[NSString class]]) {
return [object isEqualToString:@""];
} else if ([object isKindOfClass:[NSNumber class]]) {
return [object isEqualToNumber:@(0)];
}
return NO;
}
@end
网友评论