【发布时间】:2009-01-27 03:54:35
【问题描述】:
我可以简单地使用
if(myString == nil)
由于某种原因,我知道为 null 的字符串未能通过此语句。
【问题讨论】:
-
就是这样,没有其他代码什么都不懂
标签: iphone objective-c string null
我可以简单地使用
if(myString == nil)
由于某种原因,我知道为 null 的字符串未能通过此语句。
【问题讨论】:
标签: iphone objective-c string null
您的字符串是否可能实际上不是nil,而只是一个空字符串?您可以尝试测试是否[myString length] == 0。
【讨论】:
你可以找到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;
}
【讨论】:
你可以使用这个检查你的获取字符串
if(myString==(id) [NSNull null] || [myString length]==0 || [myString isEqualToString:@""])
{
//String is null or bad response
}
【讨论】:
调试器中的字符串似乎报告为 (null),但这是由于它的分配方式,我修复了它,现在它报告为 nil。这解决了我的问题。
谢谢!
【讨论】:
notice length = 0 并不一定意味着它是 nil
NSString *test1 = @"";
NSString *test2 = nil;
它们不一样。虽然长度都是0。
【讨论】:
您可以使用以下命令隐式检查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
}
【讨论】:
我今天遇到了这个问题。尽管将字符串分配为 nil:NSString *str = nil;,但测试 if (str == nil) 返回了 FALSE!但是,将测试更改为 if (!str) 有效。
【讨论】:
检查 NSAttributedString 是否为空:
let isEmpty = atrributedString.string.isEmpty
【讨论】: