程序员在开发过程中经常需要判断字符串(一般为UITextField、UITextView之类和接收后台返回的json字符串)是否为空。
很多人会直接if([yourTextField.textisEqualToString:@""] || yourTextField.text== nil])
这样进行字符串的判断,然而很遗憾,这样的判断往往经常会出现失败的情况,造成很多莫名其妙的bug。
所以我一般都将非空判断放到自己建的工具类中,调用工具类中方法实现判断。
字符串的非空判断
在.h中声明
/**
* 判断字符串是否为空
*
* @param string 传入要判断的字符串
*
* @return 返回的bool值为YES则为空
*/
+ (BOOL)isBlankString:(id)string;
在.m中实现
+ (BOOL)isBlankString:(id)string1{
if ([string1 isKindOfClass:[NSNull class]]) {
return YES;
}
NSString * string = [NSString stringWithFormat:@"%@",string1];
return string == nil || string==(id)[NSNull null] || [string isEqualToString: @""] || string.length == 0||[[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length]==0 || [string isEqualToString:@"(null)" ] || [string isEqualToString:@"null"]||[string isEqualToString:@""];
}
这样就可以在项目中任何地方调用。类似于
if ([UtilTools isBlankString:_phoneNumTF.text])
{
[MessageAlertView showErrorMessage:@"手机号码不能为空"];
}else if ([UtilTools isBlankString:_VerifyTF.text])
{
[MessageAlertView showErrorMessage:@"请输入验证码"];
}
数组的非空判断
/**
* 判断数组是否为空
*
* @param array 传入要判断的数组
*
* @return 返回的bool值为YES则为空
*/
+ (BOOL)isBlankArray:(NSArray *)array;
+ (BOOL)isBlankArray:(NSArray *)array
{
if (array == NULL || array == nil || [array isKindOfClass:[NSNull class]] || array.count == 0)
{
return YES;
}
return NO;
}
字典的非空判断
/**
* 判断字典是否为空
*
* @param array 传入要判断的字典
*
* @return 返回的bool值为YES则为空
*/
+(BOOL)isBlankDictionary:(NSDictionary *)dictionary;
+(BOOL)isBlankDictionary:(NSDictionary *)dictionary
{
if (dictionary == nil || [dictionary isKindOfClass:[NSNull class]] || dictionary.count == 0)
{
return YES;
}
return NO;
}
对象的非空判断
/**
* 判断对象是否为空
* PS:nil、NSNil、@""、@0 以上4种返回YES
*
* @return YES 为空 NO 为实例对象
*/
+ (BOOL)dx_isNullOrNilWithObject:(id)object;
+ (BOOL)dx_isNullOrNilWithObject:(id)object;
{
if (object == nil || [object isEqual:[NSNull null]]) {
return YES;
} else if ([object isKindOfClass:[NSString class]]) {
if ([object isEqualToString:@""]) {
return YES;
} else {
return NO;
}
} else if ([object isKindOfClass:[NSNumber class]]) {
if ([object isEqualToNumber:@0]) {
return YES;
} else {
return NO;
}
}
return NO;
}