1

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

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

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

4

2 回答 2

1

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

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

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

于 2011-11-02T08:42:49.423 回答
1

问题是该索引indexPath.row大于secondArray或中存在的索引firstArray。要解决根本原因,您需要找出数组中缺少该元素的原因。为确保它不会崩溃并在标签的 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] : @"";
}
于 2011-11-02T08:47:51.367 回答