索引0超出空数组的边界对于iOS 8的表视图

时间:2014-09-02 13:34:30

标签: objective-c uitableview ios8

我创建了一个标签;以编程方式编写代码如下:

        tblWebserviceList=[[UITableView alloc] initWithFrame:CGRectMake(345, 304, 430, 180)];
        tblWebserviceList.delegate=self;
        tblWebserviceList.dataSource=self;
        tblWebserviceList.rowHeight=30;
        [WebServiceView addSubview:tblWebserviceList];

现在,这个表视图被添加到一个名为WebServiceView的视图上,我在一个按钮上单击添加

表格视图的委托方法如下

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}
//------------------------------------------------------------------------
// Method : numberOfRowsInSection
// method to set the number of row in the tableview
//------------------------------------------------------------------------
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
            if(arrWebServiceList==nil)
                return 0;

            return [arrWebServiceList count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if(cell==nil)
            {
                cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
                cell.selectionStyle=UITableViewCellSelectionStyleNone;
            }
            cell.textLabel.font=[UIFont fontWithName:@"Helvetica" size:15];
            cell.textLabel.text=[arrWebServiceList objectAtIndex:indexPath.row];
            return cell;
}

点击一个按钮,我有添加WebServiceView的代码,如下所示:

 tblWebserviceList.hidden=YES;
    [self.view addSubview:WebServiceView];

此处在添加父视图之前我隐藏了tblWebserviceList并将在需要时显示

这就是代码。

现在我的问题是这个代码在ios 7.0和7.1上运行良好。

但是应用程序在ios 8.0上崩溃了。使用xcode 6的beta 6调试此代码。

崩溃日志为

*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array'
*** First throw call stack:
(0x22c6bf77 0x30134c77 0x22b803d7 0x40b94f 0x26315501 0x263192db 0x2624434f 0x25c724c5 0x25c6dec1 0x25c6dd49 0x25c6d737 0x25c6d541 0x25c6744d 0x22c32835 0x22c2ff19 0x22c3031b 0x22b7dda1 0x22b7dbb3 0x2a063051 0x262a5c41 0x53aed 0x53438)
libc++abi.dylib: terminating with uncaught exception of type NSException

我认为只有当表的第一次数据源数组包含0记录时才会出现此问题,因为首先我显示空表,然后在插入Web服务URL后添加记录。

如果记录大于0,那么它将正常工作。只发出0条记录。

请帮助我!!!

由于

1 个答案:

答案 0 :(得分:0)

更改此行

cell.textLabel.text=[arrWebServiceList objectAtIndex:indexPath.row];

cell.textLabel.text = [arrWebServiceList count] > 0 ? [arrWebServiceList objectAtIndex:indexPath.row] : @"DummyText";