如何测试NSString是否为零?

时间:2009-01-27 03:54:35

标签: iphone objective-c string null

我可以简单地使用

if(myString == nil)

由于某种原因,我知道的字符串为null,这个语句失败了。

8 个答案:

答案 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