当我们在开发中,我们获取的数据我们在不判断是否为空的时候就直接去赋值或者通过下标去强行获取就会出现程序中最容易出现的闪退问题,这样的例子最常见的就是:字符串、数组和字典了
所以为了防止程序出现闪退,我们必须要判断一下他是否为空值,那我们如何去判断呢?
有的人可能直接使用字符串穿的长度是否 == 0 来判断,但是这样做太过片面了,如果这个不是个字符串的话怎么会有长度呢,所以这种判断是不对的
下面是我自己总结的一个更好一点判断字符串为空的方法,判断还是不完善的话请在评论区补充,为了方便使用,我写成了+方法(类方法)
/**
判断字符串是否为空
@param aStr 字符串
@return YES 空 NO
*/
+ (BOOL)isBlankString:(NSString *)aStr {
if ( !aStr ) {
return YES;
}
if ([aStr isKindOfClass:[NSNull class]]) {
return YES;
}
if (!aStr.length) {
return YES;
}
if (aStr == nil) {
return YES;
}
if (aStr == NULL) {
return YES;
}
if ([aStr isEqualToString:@"NULL"]) {
return YES;
}
NSCharacterSet *set = [NSCharacterSet whitespaceAndNewlineCharacterSet];
NSString *trimmedStr = [aStr stringByTrimmingCharactersInSet:set];
if (!trimmedStr.length) {
return YES;
}
return NO;
}
下面是数组和字典的
/**
判断数组为空
@param arr 数组
@return YES 空 NO
*/
+ (BOOL)isBlankArr:(NSArray *)arr {
if (!arr) {
return YES;
}
if ([arr isKindOfClass:[NSNull class]]) {
return YES;
}
if (![arr isKindOfClass:[NSArray class]]) {
return YES;
}
if (!arr.count) {
return YES;
}
if (arr == nil) {
return YES;
}
if (arr == NULL) {
return YES;
}
return NO;
}
/**
判断字典为空
@param dic 数组
@return YES 空 NO
*/
+ (BOOL)isBlankDictionary:(NSDictionary *)dic {
if (!dic) {
return YES;
}
if ([dic isKindOfClass:[NSNull class]]) {
return YES;
}
if (![dic isKindOfClass:[NSDictionary class]]) {
return YES;
}
if (!dic.count) {
return YES;
}
if (dic == nil) {
return YES;
}
if (dic == NULL) {
return YES;
}
return NO;
}
网友评论