21

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

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

谢谢

4

5 回答 5

69

像那样:

[myString isEqual: [NSNull null]];
于 2013-10-23T16:16:14.560 回答
10

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

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

如果您可能有所有 3 个选项,则第 3 个检查包含第一个,但我不知道对所有三个检查进行简单检查。

一般来说,JSON 会返回[NSNull null]一个nullJSON 值,但有些工具包可能会返回@""(length == 0)。 nil永远不会在 iOS 中使用,因为它不能放在数组/字典中。

于 2013-10-23T18:17:59.263 回答
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
于 2013-10-23T17:12:47.567 回答
1

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

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

在将值传递给指针之前使用此代码段(注意这是一个 C 函数),您可以安全地传递一个值,或者如果 NSNull 中的值是 nil。传递 nil 很棒,因为如果您向 nil 对象发送消息,它不会引发异常。您还可以使用-isKindOfClass.

于 2013-10-23T16:24:15.637 回答
1

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

于 2013-10-23T16:15:18.337 回答