【问题标题】:how to Check NSString is null or not [duplicate]如何检查 NSString 是否为空 [重复]
【发布时间】:2013-10-23 16:12:44
【问题描述】:

我想检查NSString 是否为空。我从 JSON 数组分配。分配该字符串后,值为<null>。现在我想检查这个字符串是否为空。所以我这样放

if (myStringAuthID==nil) 但是这个 if 语句总是错误的。如何检查字符串是否为空。请帮帮我

谢谢

【问题讨论】:

标签: ios objective-c xcode nsstring


【解决方案1】:

这样:

[myString isEqual: [NSNull null]];

【讨论】:

  • 无需使用isEqual== 工作得很好,因为 [NSNull null] 是一个单例。
  • 在 NSString 上创建一个类别并包含这个方法:+ (BOOL)isEmpty:(NSString *)string {return !string || [string isEqual:[NSNull null]] || [string isEqualToString:@""];}
  • if (myString == (NSString*)[NSNull null]) 如果你不强制转换它,那么就会有一个警告指出这一点。指针是不同的类型。
【解决方案2】:

“null”NSString 有三种可能的解释:

  1. someStringPtr == nil
  2. (id)someStringPtr == [NSNull null]
  3. someStringPtr.length == 0

如果您有可能全部 3 个,则第 3 个检查包含第一个,但我不知道所有三个检查的简单检查。

一般来说,JSON 将返回 [NSNull null] 以获得 null JSON 值,但某些套件可能会返回 @""(长度 == 0)。 nil 永远不会在 iOS 中使用,因为它不能放在数组/字典中。

【讨论】:

    【解决方案3】:

    试试if(myString == [NSNull null])。那应该正确评估它。

    【讨论】:

    • 当我这样输入时,有一个警告说不同指针类型(NSString 和 NSNull)之间的比较可以吗?
    • 试试我的代码吗?
    • 这不是最好的方法。你应该使用isEqual
    • 两者都对我很好,我试过了。 == 比较运算符检查它们是否是同一个对象,并且由于 NSNull null 始终是同一个对象,它应该始终有效(除非 Apple 巧妙地改变了某些东西)。
    • @Bot 不完全正确,NSNull 是一个单例,它始终为您提供相同的指针,因此如果 myString 指针指向 [NSNull null] 是安全的,并且可以更快地在指针值之间进行比较检查。
    【解决方案4】:

    我认为最好在将其转换为 NSString 或其他任何内容之前进行检查,您有不同的选择,以上是正确的,但我更喜欢这个:

    id NilOrValue(id aValue) {
      if ((NSNull *)aValue == [NSNull null]) {
        return nil;
      }
      else {
        return aValue;
      }
    }
    

    在将值传递给指针之前使用这个 sn-p(注意这是一个 C 函数),您可以安全地传递一个值,如果 NSNull 中的值是 nil。传递 nil 很棒,因为如果您向 nil 对象发送消息,它不会引发异常。您还可以使用-isKindOfClass 检查课程类型。

    【讨论】:

      【解决方案5】:

      这是我创建的字符串类别的一部分:

      @interface NSString (Enhancements)
      
      +(BOOL)isNullOrEmpty:(NSString *)inString;
      
      @end
      
      @implementation NSString (Enhancements)
      
      +(BOOL)isNullOrEmpty:(NSString *)inString
      {
          BOOL retVal = YES;
      
          if( inString != nil )
          {
              if( [inString isKindOfClass:[NSString class]] )
              {
                  retVal = inString.length == 0;
              }    
              else
              {
                  NSLog(@"isNullOrEmpty, value not a string");
              }
          }
          return retVal;
      }
      
      @end
      

      【讨论】:

      • inString != nil是指针和整数的比较,不建议这样做
      猜你喜欢
      • 2011-01-02
      • 2012-08-27
      • 2013-05-11
      • 1970-01-01
      • 1970-01-01
      • 2016-08-01
      • 2013-01-10
      • 1970-01-01
      • 2012-01-09
      相关资源
      最近更新 更多