我正在切换tableview的数据源,但是indexPath.row会抛出一个异常[index x beyond bounds]
cell.customLabel.text = [[(_secondTab.selected) ? secondArray : firstArray objectAtIndex:indexPath.row]elementName];
知道如何解决这个问题吗?
答案 0 :(得分:1)
当索引值超出范围时,可能会发生这种情况。确保secondArray和firstArray具有相同数量的值。或者使用你的逻辑来验证它是否超出范围?
例如,如果数据源是secondArray,则indexPath.row
为4
firstArray有3个值,secondArray有6个值。在那种情况下,[firstArray objectAtIndex:4]
将抛出异常。
答案 1 :(得分: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] : @"";
}