我正在尝试确定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
答案 0 :(得分:2)
我怀疑您的问题strWord
实际上包含@"(null)"
,如果您将nil
传递给%@
中的+stringWithFormat:
格式令牌,会发生这种情况。相反,您想要检查[someArray objectAtIndex:x]
是否为nil
。幸运的是,有一条捷径。只需使用它:
NSString *strWord = [[someArray objectAtIndex:x] description];
这与[NSString stringWithFormat:@"%@", [someArray objectAtIndex:x]]
相同,除非[someArray objectAtIndex:x]
为nil
,strWord
将包含nil
而不是@"(null)"
。原因是%@
格式令牌只是在传递的参数上调用-description
,除了特殊情况nil
并将其转换为@"(null)"
。但是,直接在对象上调用-description
会跳过nil
检查,如果在nil
上调用,则只返回nil
。
答案 1 :(得分:1)
@Kevin Ballard的技巧很有用,但请记住[someArray objectAtIndex:x]
除非someArray
为零,否则不能返回nil(你不能将{n}放在NSArray
中)。它最接近的是+[NSNull null]
,这不是一回事。所以,如果你在这里得到“(null)”,那表明你的数组实际上是零。我可能会在你的方法中检查一下,而不是在字符串中查找@“(null)”的特殊情况。