我将数据插入表视图,如下所示。如果有超过6个App崩溃并且显示错误:
,则5到6个元素没有问题 "Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSMutableArray objectAtIndex:]: index 11 beyond bounds [0 .. 10]' "
- (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section
{
return [ProductArray count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
NSDictionary *aDict = [ProductArray objectAtIndex:indexPath.row];
cell.textLabel.text= [aDict objectForKey:@"ProductName"];
return cell;
}
答案 0 :(得分:1)
使用此代码
if(indexPath.row < [ProductArray count]){
NSDictionary *aDict = [ProductArray objectAtIndex:indexPath.row];
cell.textLabel.text= [aDict objectForKey:@"ProductName"];
}
答案 1 :(得分:0)
显然,崩溃消息表明您正在尝试访问超出数组可包含的元素限制的元素。请检查您是否正在更新tableview和数组中的numberOfRows。
答案 2 :(得分:0)
在numberOfRowsInSection
中,您必须为行数oldNumberOfRows + addedRowsNumber设置正确的数字。
编辑:
在将行添加到tableview之前,在ProductArray中添加每行的字典。
答案 3 :(得分:0)
该错误表明您正在尝试访问索引为11(第12个对象)或更高版本的NSMutableArray中仅包含11个对象的对象。数组索引从0开始,这可能是问题所在。尝试对ProductArray的大小执行NSLog并检查它拥有多少个对象。正如许多人在崩溃之前所说的那样,可能是numberofRowsInSection方法。如果您不想打扰ProductArray大小,只需返回一个固定的数字,看看其余的代码是否正常。