我有一个UITableView,我想在我的视图控制器的viewDidLoad中修改它。 但UITableView不会在viewDidLoad中查询其dataSource,因此我首先调用reloadData,然后使用beginUpdates和endUpdates修改其单元格。 (在我的情况下,我只是删除一些单元格)。 但是当调用endUpdates时会抛出异常:
[__ NSArrayM insertObject:atIndex:]:索引1超出空数组的边界。
这个例外是什么意思? 我知道我正在向UITableView返回正确的数字,因为如果我在viewDidAppear之后调用它,它可以完美地工作,它在viewDidLoad中不起作用。
编辑:
这是我的代码
for (int i = 0; i < [customDataSource numberOfSectionsInTableView]; i ++) {
NSInteger n = [customDataSource tableView:self numberOfRowsInSection:section];
NSMutableArray* array = [[NSMutableArray alloc] initWithCapacity:n];
for (NSInteger i = 0; i < n; i++)
[array addObject:[NSIndexPath indexPathForRow:i inSection:section]];
[super beginUpdates];
[super deleteRowsAtIndexPaths:array withRowAnimation:UITableViewRowAnimationNone];
[super endUpdates];
}
当我将此代码从viewDidAppear移动到viewDidLoad或viewWillAppear时,它将崩溃。
答案 0 :(得分:-1)
看起来您正在尝试将索引1处的对象插入到空数组中。如果数组为空,则唯一可接受的插入索引为0.检查如何计算索引值。