cellForRowAtIndexPath - 超出边界的objectAtIndex

时间:2014-01-30 14:06:15

标签: ios tableview

我在使用tableView时遇到了一些麻烦。 在这种情况下,我有4个部分。

第0,1,2节有1个细胞。 第3节有2个单元格。

我现在收到错误,

  

由于未捕获的异常'NSRangeException'而终止应用程序,原因:   ' - [__ NSCFArray objectAtIndex:]:index(1)超出边界(1)'

现在我明白这是在试图引用一个不属于该部分的单元格?

我挣扎的地方是每个部分的计数是正确的,如下所示。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    NSLog(@"Sections: %d", [_timetableDataArray count]);
    return [_timetableDataArray count];
}

按预期返回

  

章节:4

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{   
     NSDictionary *sectionContents = [_timetableDataArray objectAtIndex: section];
     NSLog(@"Section %d contains %d items", section, [sectionContents count]);

     return [sectionContents count];
}

上述返回的日志,

  

第3节包含2个项目

     

第0节包含1个项目

     

第1节包含1个项目

     

第2节包含1个项目

这是绝对正确的。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{


    NSLog(@"Iterating --- section: %d  row: %d", indexPath.section, indexPath.row);

}

以上方法甚至都没有到达NSLog。它在此之前就崩溃了。

如果我更改了我的数据数组,那么每个部分都有2个项目,一切正常。

以下是我的数据,http://pastebin.com/q5rbsvC8 当numberOfRowsInSection为每个部分返回正确的行数时,我只是不明白这次崩溃的来源。

我原本以为它可能是0索引的问题,但是我将这些改为从1开始,但没有帮助。

非常感谢任何帮助/建议。

谢谢, 阿德里安

1 个答案:

答案 0 :(得分:0)

在{/ 1}之前NSLog尝试section {/ 1}}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

查看是否有NSDictionary *sectionContents = [_timetableDataArray objectAtIndex: section]; 的任何意外值?