我可以简单地使用
if(myString == nil)
由于某种原因,我知道的字符串为null,这个语句失败了。
答案 0 :(得分:28)
您的字符串可能实际上不是nil
,而只是一个空字符串吗?您可以尝试测试[myString length] == 0
。
答案 1 :(得分:16)
您可以找到more on objective C string here.
+ (BOOL ) stringIsEmpty:(NSString *) aString {
if ((NSNull *) aString == [NSNull null]) {
return YES;
}
if (aString == nil) {
return YES;
} else if ([aString length] == 0) {
return YES;
} else {
aString = [aString stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]];
if ([aString length] == 0) {
return YES;
}
}
return NO;
}
+ (BOOL ) stringIsEmpty:(NSString *) aString shouldCleanWhiteSpace:(BOOL)cleanWhileSpace {
if ((NSNull *) aString == [NSNull null]) {
return YES;
}
if (aString == nil) {
return YES;
} else if ([aString length] == 0) {
return YES;
}
if (cleanWhileSpace) {
aString = [aString stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]];
if ([aString length] == 0) {
return YES;
}
}
return NO;
}
答案 2 :(得分:7)
您可以使用此
检查您的字符串 if(myString==(id) [NSNull null] || [myString length]==0 || [myString isEqualToString:@""])
{
//String is null or bad response
}
答案 3 :(得分:3)
似乎调试器中的字符串报告为(null),但这是由于它是如何分配的,我修复了它,现在报告为nil。这解决了我的问题。
谢谢!
答案 4 :(得分:3)
注意长度= 0并不一定意味着它是零
NSString *test1 = @"";
NSString *test2 = nil;
他们不一样。虽然长度都是0。
答案 5 :(得分:2)
您可以使用以下方式隐式检查nil
(已分配但未初始化):
if (!myString) {
//do something
}
如果从字典或数组中分配了myString
,您可能还希望像这样检查NSNULL
:
if ([myString isEqual:[NSNull null]]) {
//do something
}
最后(如Sophie Alpert所提到的),您可以检查空字符串(空值):
if ([myString length] == 0) {
//do something
}
通常,您可能希望合并表达式:
if (!myString || [myString length] == 0) {
//do something
}
答案 6 :(得分:0)
我今天遇到了这个问题。尽管将字符串指定为nil:NSString *str = nil;
,但测试if (str == nil)
返回FALSE
!但是,将测试更改为if (!str)
。
答案 7 :(得分:0)
检查NSAttributedString是否为空:
let isEmpty = atrributedString.string.isEmpty