【问题标题】:How can I test an NSString for being nil?如何测试 NSString 是否为零?
【发布时间】:2009-01-27 03:54:35
【问题描述】:

我可以简单地使用

if(myString == nil)

由于某种原因,我知道为 null 的字符串未能通过此语句。

【问题讨论】:

  • 就是这样,没有其他代码什么都不懂

标签: iphone objective-c string null


【解决方案1】:

您的字符串是否可能实际上不是nil,而只是一个空字符串?您可以尝试测试是否[myString length] == 0

【讨论】:

  • 为什么这还没有被选作答案!
【解决方案2】:

你可以找到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;  
}

【讨论】:

    【解决方案3】:

    你可以使用这个检查你的获取字符串

       if(myString==(id) [NSNull null] || [myString length]==0 || [myString isEqualToString:@""])
        {
         //String is null or bad response
        }
    

    【讨论】:

      【解决方案4】:

      调试器中的字符串似乎报告为 (null),但这是由于它的分配方式,我修复了它,现在它报告为 nil。这解决了我的问题。

      谢谢!

      【讨论】:

        【解决方案5】:

        notice length = 0 并不一定意味着它是 nil

        NSString *test1 = @"";
        NSString *test2 = nil;
        

        它们不一样。虽然长度都是0。

        【讨论】:

          【解决方案6】:

          您可以使用以下命令隐式检查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
          }
          

          【讨论】:

            【解决方案7】:

            我今天遇到了这个问题。尽管将字符串分配为 nil:NSString *str = nil;,但测试 if (str == nil) 返回了 FALSE!但是,将测试更改为 if (!str) 有效。

            【讨论】:

              【解决方案8】:

              检查 NSAttributedString 是否为空:

              let isEmpty = atrributedString.string.isEmpty
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2011-02-27
                • 2011-09-17
                • 1970-01-01
                • 2021-08-16
                相关资源
                最近更新 更多