【问题标题】:-[__NSCFNumber length]: unrecognized selector sent to instance-[__NSCFNumber 长度]:发送到实例的无法识别的选择器
【发布时间】:2015-09-09 05:12:31
【问题描述】:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
  CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:@"myCell"];

    if (cell == nil)
    {
        [tableView registerNib:[UINib nibWithNibName:@"CustomCell" bundle:nil] forCellReuseIdentifier:@"myCell"];
        cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:@"myCell"];
    }

    if (cell.tag == 0)
    {

    }

    str = [jsonData objectAtIndex:cell.tag];

    NSDictionary *dict = [jsonData objectAtIndex:indexPath.row];
    cell.lblDeliveryTime.text = [dict valueForKey:@"sysord_ExpectedDeliveryTime"];
    cell.lblOrderPlacedTime.text = [dict valueForKey:@"sysord_OrderDateTime"];
    cell.lblDeliveryPickUP.text = [dict valueForKey:@"sysord_DeliveryType"];

    NSDictionary *dict1 = [jsonData objectAtIndex:cell.tag];

    orderidString = [dict1 valueForKey:@"sysord_ID"];

    DetailViewController *detailVC=[[DetailViewController alloc]initWithNibName:@"DetailViewController" bundle:nil];


    return cell;
}

【问题讨论】:

  • 哪一行给出了错误? (提示:使用调试器逐步找出答案。)
  • 究竟是哪一行?我猜这是三个“cell.ZzZ.text”或orderidString 之一。 dict(或dict1)中的值是NSNumber,您可以像使用NSString一样使用它。
  • 您尚未将标签设置为单元格,并尝试访问基于 cell.tag 的值。不起作用。您还将 [jsonData objectAtIndex:cell.tag] 分配给 str 和 dict1。它不清楚。这里发生了什么。但是 [jsonData objectAtIndex:indexPath.row] 是有意义的,因为 indexpath 会自动生成。

标签: objective-c uitableview xib


【解决方案1】:

其中一个值不是NSString,而是NSNumber

我建议您先检查类型,但如果您想始终转换为字符串,您可以使用:

cell.lblDeliveryPickUP.text = [NSString stringWithFormat:@"%@", dict[@"sysord_DeliveryType"]];

【讨论】:

  • @Droppy 理想情况下,您甚至不会将数据保存为 JSON。您可以事先将其解析为具有正确类型属性的对象。
【解决方案2】:

当您将字典中的对象分配给text 时,您需要确保它是 NSString 类型。

cell.lblDeliveryTime.text = [[dict objectForKey:@"sysord_ExpectedDeliveryTime"] stringValue];
cell.lblOrderPlacedTime.text = [[dict objectForKey:@"sysord_OrderDateTime"] stringValue];
cell.lblDeliveryPickUP.text = [[dict objectForKey:@"sysord_DeliveryType"] stringValue];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-03
    相关资源
    最近更新 更多