gpt4 book ai didi

ios - 如果字符串为空则抛出异常

转载 作者:行者123 更新时间:2023-11-28 18:58:27 27 4
gpt4 key购买 nike

如果字符串为空,我会得到一个异常:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSNull length]: unrecognized selector sent to instance

这是字典的对象之一,包含一个空字符串:

{
cabdriver = "<null>";
code = SV1000000079;
date = "2015-03-15";
destiny = "";
email = "jose@gmail.com";
origin = vxd;
}

这是我抛出异常的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
HistorialCellTableViewCell *cell = (HistorialCellTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"Cell"];

NSString *origin = [[historialServicios objectAtIndex:indexPath.row] valueForKey:@"origin"];
if (origin.length ==0){
cell.origen_label.text = @"-";
} else {
cell.origen_label.text = origin;
}

NSString *destiny = [[historialServicios objectAtIndex:indexPath.row] valueForKey:@"destiny"];
if (destiny.length ==0){
cell.destiny_label.text = @"-";
} else {
cell.destiny_label.text = destiny;
}


NSString *cabdriver = [[historialServicios objectAtIndex:indexPath.row] valueForKey:@"cabdriver"];
if (cabdriver.length ==0){
cell.conductor_label.text = @"-";
} else {
cell.conductor_label.text = cabdriver;
}

NSString *date = [[historialServicios objectAtIndex:indexPath.row] valueForKey:@"date"];

cell.fecha_label.text = date;
return cell;
}

我已经尝试过其他方法来检查字符串是否为空,但我一直在搜索,这应该是检查它的方法。

请告诉我我的代码有什么问题?

最佳答案

当处理从服务器返回的数据时,您应该为任何值为空的情况做好准备。我使用以下两种方法 - 一种检查字符串,另一种检查数字:

- (NSString *)stringValueOfDictionaryObject:(id)dictionaryObject
{
if (dictionaryObject == [NSNull null]) {
return @"";
}
else {
return (NSString *)dictionaryObject;
}
}

- (NSNumber *)numericValueOfDictionaryObject:(id)dictionaryObject
{
if (dictionaryObject == [NSNull null]) {
return nil;
}
else {
return (NSNumber *)dictionaryObject;
}
}

对于您的出租车司机,您可以执行以下操作:

NSString *cabDriver = [self stringValueOfDictionaryObject:(id)[[historialServicios objectAtIndex:indexPath.row] valueForKey:@"cabdriver"]];

请注意,如果您的 json 文件中的 cab 驱动程序值为 null,则上述例程将返回一个空字符串 (@"")。您可以在例程中或在获取 cabDriver NSString 值后将其更改为 @"-"。

关于ios - 如果字符串为空则抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29090703/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com