关于objective C:ios CellForRowAtIndexPath 调用过多,导致 NSRangeException

ios CellForRowAtIndexPath is called too much, causing a NSRangeException

我已经创建了一个包含两个数据的数组:

1
2
3
4
5
6
7
8
{
    name ="Foo";
    nbLikes = 11;
},
    {
    name ="Bar";
    nbLikes = 5;
}

问题是,当我想用?? cellForRowAtIndexPath 解析这些数据时,我得到了一个 NSRangeException,因为他们试图查看我数组的索引 2。

* Terminating app due to uncaught exception 'NSRangeException', reason: '* -[__NSArrayM objectAtIndex:]: index 2 beyond bounds [0 .. 1]'

这是 CellForRowAtIndePath 中的代码:

1
2
3
4
5
6
7
8
    NSString *cellLike = @"cellFanItem";
    customCell *cell = [tableView dequeueReusableCellWithIdentifier:cellLike];
    if (cell == nil)
        cell = [customCell new];
    cell.primaryLabel.text = [tmpfanname objectAtIndex:indexPath.row];
    cell.secondaryLabel.text = [tmpNbLike objectAtIndex:indexPath.row];
    cell.backgroundColor=RGB(0, 0, 0);
    return (cell);

有人知道它为什么叫太多吗?有什么解释吗?


您的数组在您正在访问的索引处没有对象。

设置numberofrowsinsection方法返回数组计数。


检查 numberOfRowsInSection 函数。数组 tmpfanname 和 tmpNbLike 应该有相同数量的项目

  • (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {

    return [tmpfanname 计数];

    }