清除NSMutableArray以进行刷新

时间:2011-10-19 10:05:12

标签: iphone uitableview nsmutablearray

在刷新视图时,我需要清除几个NSMutableArrays。但是,当我尝试使用[array removeAllObjects]; index beyond bounds error[tableView reloadData]导致我的桌面视频崩溃时将其清除。我只使用刷新,清除数组并调用与viewDidLoad相同的函数来填充tableview。直到方法的最后一行才会调用{{1}}。

编辑:问题很可能是这样的:我使用pull来刷新外部库,当你向上滚动并释放表时,它会反弹回来,因此UITableView会尝试加载下一个单元格,它就是因为数组被清除了,它仍然被加载。

答案:从数组中删除AllObjects,立即执行self.tableView reloadData,然后继续其余的。

4 个答案:

答案 0 :(得分:42)

问题可能是由于numberOfRowsInSection返回一些计数而您的数据源数组为空。

只需致电[array removeAllObjects]numberOfRowsInSection return [array count]

我希望它能解决您的问题。最好的运气!!!

答案 1 :(得分:3)

我以下列方式从表格视图中删除单元格 -

NSMutableArray* indexPathsToDelete = [[NSMutableArray alloc] init];
            for(unsigned int i = 0; i < [self.array count]; i++)
            {
                [indexPathsToDelete addObject:[NSIndexPath indexPathForRow:i inSection:0]];
            }

[self.tableView beginUpdates];
[self.array removeAllObjects];
[self.tableView deleteRowsAtIndexPaths:indexPathsToDelete withRowAnimation:UITableViewRowAnimationLeft];
[self.tableView endUpdates];
[indexPathsToDelete release];

答案 2 :(得分:0)

刷新阵列时,首先检查它是否有对象&amp;然后重新初始化您的阵列并释放一个。

答案 3 :(得分:0)

我所做的是

[array removeAllObjects];

然后打电话

[self.tableview reloadData];