2

我有一个从 JSON 查询字符串返回的 NULL 对象,但我不知道如何在 If 语句中检查它。我的语法如下,但我似乎仍然无法捕获NULL该类(即,如果没有返回任何内容,则无法设置文本变量,因此它必须是一个NULL类?),无论如何,我需要检查@"BillingStreet"里面有东西,如果不是为了避免处理它(否则应用程序崩溃,因为它试图对 中的其中一个的文本值不设置任何内容fieldsVC

- (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"];
    }
}
4

2 回答 2

8

JSON“null”值转换为[NSNull null],您可以使用

if (text == [NSNull null]) ...

因为它是一个单例

或者,您可以检查对象是否包含预期的类型,即字符串:

NSString *text = [obj objectForKey:@"BillingStreet"];
if ([text isKindOfClass:[NSString class]]) {
    self.labelCustomerAddress.text = text;
} else {
    self.labelCustomerAddress.text = @"no street";
}

这在服务器发送错误数据(例如数字或数组而不是字符串)的情况下更加稳健。

于 2013-09-20T14:11:12.653 回答
6

text == nil ? @"0" : text

或者

text ? text : @"0"

但是如果你从 JSON 中得到它,那么你可能会得到NSNull类的实例。在这种情况下,您应该检查

text && ![text isKindOfClass:[NSNull class]] ? text : @"0"

于 2013-09-20T14:11:38.170 回答