6

那么我的代码是这样的:

我有两个字符串,place and date.我像这样使用它们:

cell.datePlace.text= [NSString stringWithFormat:@"%@, %@",date,place];

在某些条目中,输出如下所示:

"21/10/2012, <null>"
"21/11/2012, None"
"21/12/2013, London"

我的应用程序不会崩溃,但我希望该位置仅在不为空且不等于无时可见。

所以我尝试了这个:

 NSString * place=[photo objectForKey:@"place"];


if ([place isEqualToString:@"None"]) {
                cell.datePlace.text= [NSString stringWithFormat:@"%@",date];
            } else {
                cell.datePlace.text= [NSString stringWithFormat:@"%@, %@",date,place];
            }

问题是<null>我的应用程序何时崩溃并且出现此错误:

[NSNull isEqualToString:] unrecognized selector send to instance

所以,我尝试了这个:

if (place) {
            if ([place isEqualToString:@"None"]) {
                cell.datePlace.text= [NSString stringWithFormat:@"%@",date];
            } else {
                cell.datePlace.text= [NSString stringWithFormat:@"%@, %@",date,place];
            }
        } else {
            cell.datePlace.text= [NSString stringWithFormat:@"%@",date];
        }

但问题依然存在。

4

3 回答 3

30

我猜你的源数据来自 JSON 或类似的(正在解析数据并且丢失的数据被设置为的东西NSNull)。这NSNull是您需要处理但目前还没有处理的问题。

基本上:

if (place == nil || [place isEqual:[NSNull null]]) {
    // handle the place not being available 
} else {
    // handle the place being available
}
于 2013-10-19T14:47:19.400 回答
4

采用

if (! [place isKindOfClass:[NSNull class]) {
  ...
}

代替

if (place) {
   ...
}

注意:NSNull 对象不为 nil,因此if (place)将是真的。

于 2013-10-19T14:47:03.027 回答
2

使用 [NSNull null]:

if ([place isKindOfClass:[NSNull class]])
{
    // What happen if place is null

}
于 2013-10-19T14:46:54.090 回答