indexPath.row抛出异常

时间:2011-11-02 08:39:22

标签: iphone uitableview ios5 custom-cell

我正在切换tableview的数据源,但是indexPath.row会抛出一个异常[index x beyond bounds]

cell.customLabel.text = [[(_secondTab.selected) ? secondArray : firstArray objectAtIndex:indexPath.row]elementName];

知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

当索引值超出范围时,可能会发生这种情况。确保secondArray和firstArray具有相同数量的值。或者使用你的逻辑来验证它是否超出范围?

例如,如果数据源是secondArray,则indexPath.row为4

firstArray有3个值,secondArray有6个值。在那种情况下,[firstArray objectAtIndex:4]将抛出异常。

答案 1 :(得分:1)

问题是索引indexPath.row大于secondArrayfirstArray中存在的索引。要解决根本原因,您需要找出数组中缺少元素的原因。要确保它不会崩溃,只需在标签的text属性中加载一个空字符串,请检查数组中最大的索引是否大于或等于indexPath.row

if (_secondTab.selected) { 
    cell.customLabel.text = (indexPath.row <= ([secondArray count]-1)) ? [[secondArray objectAtIndex:indexPath.row] elementName] : @"";
} else {
    cell.customLabel.text = (indexPath.row <= ([firstArray count]-1)) ? [[firstArray objectAtIndex:indexPath.row] elementName] : @"";
}