将8个或更多对象插入数组崩溃应用程序

时间:2013-05-14 19:24:05

标签: iphone ios objective-c uitableview

简单的问题,

我遍历我的表格视图单元格并将对象添加到数组中:

NSMutableArray *cells = [[NSMutableArray alloc] init];
for (NSInteger j = 0; j < [self.ammoTable numberOfSections]; ++j) // loop thru sections
{
    for (NSInteger i = 0; i < [self.ammoTable numberOfRowsInSection:j]; ++i)//in each section loop thru the cells
    {
        [cells addObject:[self.ammoTable cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:j]]];
    }       
}

这样可以正常工作,只要表格视图只有7个或更少的单元格,如果我添加8个或更多,则应用程序会将此日志与控制台崩溃:

'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:5)

如果索引路径引用当前不可见的单元格,则cellForRowAtIndexPath:的{​​{1}}方法会返回UITableView,因此

nil

在那种情况下崩溃。

答案 1 :(得分:1)

它会导致崩溃,因为屏幕上只有七行,当它全部添加到数组后,它返回nil。解决你可以做的是创建一个方法,它将输入作为索引路径并返回单元格对象而不使用重用单元格。

答案 2 :(得分:0)

魔法在cellForRowAtIndexPath:。对于某些值,这将返回nil。检查此方法并进行修复。