cellForRowAtIndexPath出错

时间:2014-08-28 16:22:36

标签: ios objective-c uitableview

填充表格视图时发生奇怪的错误。这是我无数次做过的事情,但现在我对可能非常简单的事情感到难过。也许我刚刚醒来太久了。

我有一个名为riverGauge的对象,负责从Web服务下载数据。然后将相关数据放入NSDictionary对象并作为属性返回。从字典中的键构建的键数组也作为属性返回。

在我的cellForRowAtIndexPath方法中,我使用键数组在字典中查找值并在表视图中呈现它们。很标准。这是我的cellForRowAtIndexPath:

-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    static NSString *cellID = @"DataCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];
    if(cell == nil){
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellID];
    }

    NSDate *key = [riverGauge.gaugeFlowKeys objectAtIndex:indexPath.row];

    NSString *cellText = [riverGauge.gaugeFlows objectForKey:key];
    NSLog(@"CELL TEXT = %@", cellText);

    [cell.textLabel setText:cellText]; // Error on last pass. No errors without this line

    return cell;
}

填充完最后一个单元格后,我收到一个无法识别的选择器异常。

2014-08-28 12:07:20.318 RiverGuage[9858:60b] -[__NSCFNumber length]: unrecognized selector sent to instance 0xa07b180
2014-08-28 12:07:20.319 RiverGuage[9858:60b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFNumber length]: unrecognized selector sent to instance 0xa07b180'

我已经验证返回的键数与字典中的记录数相匹配,并且指定了键的值。日志语句适用于列表中的每个项目,并且不会返回任何异常。如果[cell.textLabel setText:cellText]被注释,则cellForRowAtIndexPath方法返回时没有错误。有关为什么会发生这种情况的任何想法?谢谢!

1 个答案:

答案 0 :(得分:1)

我最好的猜测是,[riverGauge.gaugeFlowKeys objectAtIndex:indexPath.row]正在返回NSNumber。在这种情况下,请执行以下操作以设置数字。

NSNumber *cellTextNumber = [riverGauge.gaugeFlows objectForKey:key];
NSString *cellText = [cellTextNumber stringValue];
NSLog(@"CELL TEXT = %@", cellText);
[cell.textLabel setText:cellText];