Objective-C如何检查字符串是否为null

obe*_*aum 13 null objective-c nsstring

所以我想检查我的数组中的项目[clientDataArray objectForKey:@"ClientCompany"]是否是nil.

    temp = [clientDataArray objectForKey:@"ClientCompany"];
    if (temp != [NSNull null]) infofieldCompany.text = temp;
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经能够通过上面的代码实现这一点,但它确实给了我警告

  • 警告:NSArray可能无法回应-objectForKey:
  • 警告:比较不同的Objective-C类型struct NSNull * 并且struct NSString *没有强制转换

我的主要兴趣是第二次警告,但第一次警告也让我感兴趣.我该如何调整上面的代码?

Tom*_*rys 20

你的第一个警告看起来像你正试图打电话objectForKeyNSArray.哪个不行,因为NSArray没有objectForKey方法.

至于第二个警告你可以直接与nil比较,即:

if (temp != nil)
Run Code Online (Sandbox Code Playgroud)

或者因为nil等于0,你也可以这样做:

if (temp)
Run Code Online (Sandbox Code Playgroud)


小智 16

在尝试了所有选项之后,我认为这是comapre NSString null的最佳选择

if ( temp != ( NSString *) [ NSNull null ] )
{
  // do some thing
}
Run Code Online (Sandbox Code Playgroud)


小智 14

之前给出的两个答案都错过了一个基本点:你不能放入nil一个数组,所以你永远不会nil离开数组.在数组中使用NSNull占位符是正确的事情,但是你的变量temp不能被声明为NSString *,因为它可能不是一个.使用NSObject *id作为变量的类型来抑制比较警告.

  • 或者[string isEqual:[NSNull null]] (3认同)