删除UITableView行时出现NSRangeException

时间:2014-01-24 11:59:48

标签: ios objective-c uitableview

我正在创建一个警报应用程序。在主屏幕tableview向左滑动时,必须删除该行。我正在使用以下代码。但应用程序崩溃时抛出异常错误。

-(void)tableView:(UITableView *)tableView commitEditingStyle:

(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{
    if (editingStyle == UITableViewCellEditingStyleDelete) {

        [self.loadRemainderArray removeObjectAtIndex:indexPath.row];
    }
}

我得到的错误是:因未捕获的异常“NSRangeException”而终止应用,原因是:-[NSMutableArray removeObjectAtIndex:]: index 0 beyond bounds for empty array

4 个答案:

答案 0 :(得分:1)

原因是你得到的错误是因为你的数组是空的。它可能是空的原因是:

  1. 您没有初始化数组:

    self.loadRemainderArray = [[NSMutableArray alloc]init]
    
  2. 您从未在数组中添加对象:

    [self.loadRemainderArray addObject:yourObject];
    

答案 1 :(得分:1)

您尝试从中移除对象的数组为空或未初始化。您应该按如下方式保护您的代码:

if (indexPath.row < [self.loadRemainderArray count])
[self.loadRemainderArray removeObjectAtIndex:indexPath.row];

这并不能解决您的问题 - 您需要找到根本原因来理解数组为空或为零的原因

答案 2 :(得分:0)

此行会导致您的崩溃。[self.loadRemainderArray removeObjectAtIndex:indexPath.row];。因为您尝试从空数组中删除对象。只需编写此代码即可。

if (self.loadRemainderArray.count > indexPath.row)
    [self.loadRemainderArray removeObjectAtIndex:indexPath.row];

我想,你在其他地方做错了,所以这个方法中的数组是空的。在代码中查看loadRemainderArray访问权限。

答案 3 :(得分:0)

出现此异常可能有以下两种原因。

  1. 你忘记了[NSMutableArray alloc] init]你的数组。并且没有初始化添加的对象。 self.loadRemainderArray = [NSMutableArray alloc] init];

  2. 您尚未向此阵列添加任何对象。