0

我有一个 UITableView,我想在我的视图控制器的 viewDidLoad 中修改它。但是 UITableView 不会在 viewDidLoad 中查询它的数据源,所以我先调用 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 时,它会崩溃。

4

1 回答 1

-1

看起来您正试图将索引 1 处的对象插入空数组。如果数组为空,则唯一可接受的插入索引是 0。检查如何计算索引值。

于 2012-10-12T21:09:27.433 回答