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