如何检查NSString是否为空

时间:2013-10-23 16:12:45

标签: ios objective-c xcode nsstring

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

if (myStringAuthID==nil)但此if语句始终为false。我如何检查字符串为null。请帮帮我

由于

5 个答案:

答案 0 :(得分:62)

就像那样:

[myString isEqual: [NSNull null]];

答案 1 :(得分:10)

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

  1. someStringPtr == nil
  2. (id)someStringPtr == [NSNull null]
  3. someStringPtr.length == 0
  4. 如果你可能有3个,第3个检查包含第一个,但我不知道对这三个检查的简单检查。

    通常,JSON将返回[NSNull null] null JSON值,但某些工具包可能会返回@""(长度== 0)。 nil永远不会在iOS中使用,因为它不能放在数组/词典中。

答案 2 :(得分:1)

试试if(myString == [NSNull null])。这应该适当地评估它。

答案 3 :(得分:1)

我认为如果你在将它投射到NSString或其他之前检查是最好的,你有不同的选择,以上是正确的,但我更喜欢这个:

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

在将值传递给指针之前使用此片段(注意是C函数),如果NSNull中的值,则可以安全地传递值或nil。传递nil很棒,因为如果你向一个nil对象发送一条消息,它就不会抛出异常。您还可以使用-isKindOfClass检查班级类型。

答案 4 :(得分:1)

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

@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