如何处理我的数据中的 NSNull?

How to deal with NSNull in my data?

我在尝试显示标签时遇到 [NSNull rangeOfCharacterFromSet:]: 异常。错误显示

'NSInvalidArgumentException', reason: '-[NSNull length]:

下面是我的代码。

UILabel* spousename = [[UILabel alloc] initWithFrame:CGRectMake(10,line, 300,20)];

[spousename setText:[_thisburial objectForKey:@"Spouse"]];

我尝试使用以下代码测试空字符,但没有发现错误。它在尝试执行 addSuview 指令时爆炸了。

if(![spousename isEqual:nil])
{
    [self.view addSubview:spousename];
}

那么我该如何测试标签中的 NSNull 以防止收到此 [NSNull rangeOfCharacterFromSet:]: 错误消息?

您的数据实际上没有 "spouse" 的实际值,这已通过将 NSNull 的实例存储为值来表明。您需要检查一下。

这一行:

[spousename setText:[_thisburial objectForKey:@"Spouse"]];

应更新以检查值。像这样:

id spouse = _thisburial[@"Spouse"];
if ([spouse isKindOfClass:[NSString class]]) {
    spousename.text = spouse;
} else {
    // The "spouse" value wasn't set or it's not a string
    spousename.text = @""; // Set to whatever you want here
}

[_thisburial objectForKey:@"Spouse"] 正在返回 NSNull。这个需要特殊处理。

NSString *spouseString = [_thisburial objectForKey:@"Spouse"];
if (spouseString == (id)[NSNull null]) {
    spouseString = @"";
}

[spousename setText:spouseString];