我有一个从JSON查询字符串返回的NULL对象,我不知道如何在If语句中检查它。我的语法如下,但我似乎仍然无法捕获NULL
类(即,如果没有返回任何内容,则无法设置文本变量,因此它必须是NULL
类? ),无论如何,我需要检查@"BillingStreet"
中是否包含某些内容,如果没有则避免处理它(否则应用程序崩溃,因为它尝试不设置其中一个fields
的文本值在VC
)中:
- (void) tableView: (UITableView *)itemTableView didSelectRowAtIndexPath: (NSIndexPath *)indexPath{
NSDictionary *obj = [self.dataCustomerDetailRows objectAtIndex:indexPath.row];
NSString *text = [obj objectForKey:@"BillingStreet"] == nil ? @"0" : [obj objectForKey:@"BillingStreet"];
NSLog(@"%@",text);
if (text.class == NULL){
} else {
NSLog(@"no street");
self.labelCustomerAddress.text = [obj objectForKey:@"BillingStreet"];
}
}
答案 0 :(得分:8)
JSON“null”值转换为[NSNull null]
,您可以检查
与
if (text == [NSNull null]) ...
因为它是 singleton 。
或者,您可以检查对象是否包含预期类型,即字符串:
NSString *text = [obj objectForKey:@"BillingStreet"];
if ([text isKindOfClass:[NSString class]]) {
self.labelCustomerAddress.text = text;
} else {
self.labelCustomerAddress.text = @"no street";
}
在服务器发送错误数据的情况下,这是更强大的,例如,数字或数组而不是字符串。
答案 1 :(得分:6)
text == nil ? @"0" : text
或
text ? text : @"0"
但是如果从JSON获得它,那么你可能会获得NSNull
类的实例。在这种情况下,您应该检查
text && ![text isKindOfClass:[NSNull class]] ? text : @"0"