如何检查xcode中返回的null对象

时间:2013-09-20 13:58:08

标签: objective-c xcode null

我有一个从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"];
    }
}

2 个答案:

答案 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"