Ios 将行添加到带动画的UITableView时出错

Ios 将行添加到带动画的UITableView时出错,ios,uitableview,Ios,Uitableview,我使用此选项通过动画将行添加到UITableView: [bookMarksArray insertObject:infoDict atIndex:0]; NSIndexPath *newIndexPath = [NSIndexPath indexPathForRow:[bookMarksArray count] inSection:0]; [bookMarkTable insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath] w

我使用此选项通过动画将行添加到UITableView:

[bookMarksArray insertObject:infoDict atIndex:0];
NSIndexPath *newIndexPath = [NSIndexPath indexPathForRow:[bookMarksArray count] inSection:0];
[bookMarkTable insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationFade];

当我调用
[bookMarkTable reloadData]
时,一切正常。但如果我尝试使用以前的代码,我的应用程序会崩溃,并出现错误:尝试将第1行插入节0,但更新后节0中只有1行。有什么想法吗?

在创建索引路径(索引为0)时需要
[bookMarksArray count]-1

在调用insertRowsAtIndexPath之前尝试更新numberOfRows。

@Jonathan对异常的解释是正确的。但解决方案仍然是错误的。您在索引0处插入了一个对象,因此插入行的索引路径为:

NSIndexPath *newIndexPath = [NSIndexPath indexPathForRow:0 inSection:0];
如果在数组的末尾插入了对象,则可以这样做

NSIndexPath *newIndexPath = [NSIndexPath indexPathForRow:[bookMarksArray count] - 1 inSection:0];

他在索引0处插入对象。所以你的解决方案不太正确。该表将在表的底部插入一行,它将与上一行重复,因为它映射到数据模型数组末尾的同一对象。感谢Timothy的帮助,我已经习惯于看到
addObject:
,所以我完全忽略了这一点。