我的代码是这样的:
我有两个字符串,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];
}
但问题仍然存在。
答案 0 :(得分:28)
我猜你的源数据来自JSON或类似的东西(正在解析数据并且缺少的数据被设置为NSNull
)。这是您需要处理的NSNull
,目前不是。
基本上:
if (place == nil || [place isEqual:[NSNull null]]) {
// handle the place not being available
} else {
// handle the place being available
}
答案 1 :(得分:3)
使用
if (! [place isKindOfClass:[NSNull class]) {
...
}
而不是
if (place) {
...
}
注意:NSNull对象不是nil,因此if (place)
将为真。
答案 2 :(得分:2)
使用[NSNull null]:
if ([place isKindOfClass:[NSNull class]])
{
// What happen if place is null
}