0

我正在尝试加载UITableView来自 web 服务的数据。一切正常。但是,每当UITableView使用-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath委托方法显示记录时,我都会遇到如下异常-

在此处输入图像描述

这是我的代码 -

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell; //= [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Reuse_Cell"];
    UILabel *label = nil;

    cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
    cell.selectedBackgroundView = [[UIView alloc]init];
    if (cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];

        label = [[UILabel alloc]initWithFrame:CGRectZero];
        [label setLineBreakMode:UILineBreakModeWordWrap];
        [label setNumberOfLines:1];
        [label setFont:[UIFont fontWithName:@"Trebuchet MS" size:18]];
        [label setTag:1];
        label.backgroundColor = [UIColor clearColor];
        label.textColor = [UIColor blackColor];
        [[cell contentView] addSubview:label];

    }

    if (!label)
        label = (UILabel *)[cell viewWithTag:1];

    [label setText:[[webserviceRecords objectAtIndex:indexPath.row] objectForKey:@"catName"]];
    [label setFrame:CGRectMake(10.0, 5.0, 225.0, 35.0)];

    cell.selectedBackgroundView.backgroundColor = RGBACOLOR(151.0, 191.0, 69.0, 1.0);
    cell.layer.borderWidth = 2.0f;
    cell.layer.borderColor = RGBCOLOR(214, 218, 1).CGColor;

    return cell;
}

我的数组记录 -

http://pastie.org/7120406

自定义init方法

- (id)initwithInteger:(NSInteger )integer
{
    self = [super init];
    if (self) {
        startingpage = integer;
        webserviceRecords = [[NSMutableArray alloc]init];
    }
    return self;
}

NumberofRowsInSection

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    NSLog(@"Row count - %d", [webserviceRecords count]);
    return [webserviceRecords count];
}
4

2 回答 2

1

真的是一个愚蠢的错误。我已经将JSON数据直接解析到我NSMutableArray的解析中,如下所示 -

webserviceRecords = [NSJSONSerialization JSONObjectWithData:mutableData options:0 error:&error];

而不是这个,我已经像下面这样修复了这个 -

NSArray *array = nil;
array = [NSJSONSerialization JSONObjectWithData:mutableData options:0 error:&error];
webserviceRecords = [array mutableCopy];

它可以帮助我解决我的问题。感谢您回答我的问题。

干杯!

于 2013-03-26T05:53:21.923 回答
1

selectedBackgroundView在检查单元格是否有值之前,您正在设置单元格。在执行此操作之前,您应该先检查单元格是否为零。

附带说明一下,您可能会发现使用免费的 Sensible TableView 框架显示数组要容易得多。该框架会自动从您的数组中生成所有单元格(包括所有详细视图),如果您愿意,甚至可以直接从 Web 服务中获取数据。应该可以为您节省很多头痛和手工工作。希望这可以帮助。

于 2013-03-26T05:38:01.090 回答