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

Bar*_*ley 2 null xcode objective-c

我有一个从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"];
    }
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*n R 8

JSON"null"值将转换为[NSNull null]您可以检查的值

if (text == [NSNull null]) ...
Run Code Online (Sandbox Code Playgroud)

因为它是一个单身人士.

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

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

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


小智 6

text == nil ? @"0" : text

要么

text ? text : @"0"

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

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