确定NSString是否包含NULL / NIL以外的值

时间:2011-03-10 02:18:30

标签: xcode string null

我正在尝试确定NSString的值是否包含NULL / nil以外的值,并且我没有正确执行此操作:

NSString *strWord;
strWord = [NSString stringWithFormat: @"%@", [someArray objectAtIndex:x]];

// THIS IS WRONG:

if (strWord != nil) {
    // do something
} else {
   // don't do something
}

任何帮助表示赞赏! LQ

2 个答案:

答案 0 :(得分:2)

我怀疑您的问题strWord实际上包含@"(null)",如果您将nil传递给%@中的+stringWithFormat:格式令牌,会发生这种情况。相反,您想要检查[someArray objectAtIndex:x]是否为nil。幸运的是,有一条捷径。只需使用它:

NSString *strWord = [[someArray objectAtIndex:x] description];

这与[NSString stringWithFormat:@"%@", [someArray objectAtIndex:x]]相同,除非[someArray objectAtIndex:x]nilstrWord将包含nil而不是@"(null)"。原因是%@格式令牌只是在传递的参数上调用-description,除了特殊情况nil并将其转换为@"(null)"。但是,直接在对象上调用-description会跳过nil检查,如果在nil上调用,则只返回nil

答案 1 :(得分:1)

@Kevin Ballard的技巧很有用,但请记住[someArray objectAtIndex:x]除非someArray为零,否则不能返回nil(你不能将{n}放在NSArray中)。它最接近的是+[NSNull null],这不是一回事。所以,如果你在这里得到“(null)”,那表明你的数组实际上是零。我可能会在你的方法中检查一下,而不是在字符串中查找@“(null)”的特殊情况。