我有一个MutableArray,其中填充了数据库中的值:

NSMutableArray *objectsArray = [[NSMutableArray alloc] init];
for (int n=0; n<[self.array count]; n++) {
    [objectsArray addObject:[[self.array objectAtIndex:n] objectForKey:@"Name"]];
    [objectsArray addObject:[[self.array objectAtIndex:n] objectForKey:@"Name_En"]];
}

我在标签上显示值,如下所示:
cell.textLabel.text = [[[dic objectForKey:@"d"] objectAtIndex:indexPath.row] objectForKey:@"Name"];
cell.detailTextLabel.text = [[[dic objectForKey:@"d"] objectAtIndex:indexPath.row] objectForKey:@"Name_En"];

到目前为止,该应用程序运行良好。它开始时不会引发异常,并且值在标签中。但是,如果我开始滚动,应用程序将崩溃,并且出现以下错误:
Terminating app due to uncaught exception 'NSRangeException', reason: '-[__NSCFArray objectAtIndex:]: index (5) beyond bounds (5)'

为什么会发生此错误?

最佳答案

您可能是说表有6行,但实际上有5行。出现此异常的原因是,表 View 要求单元格提供indexPath.row的值为5,这表示它认为有6 [0:5 ]行,但字典中的数组有5个项目[0:5)。

关于ios - NSArray错误:NSCFArray objectAtIndex索引(5)超出范围(5),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10911088/

10-09 22:35