2014-01-24 2 views
-1

Я создаю приложение для будильника. В этом главном экране tableview при прокрутке слева строка должна быть удалена. Я использую следующий код. Но приложение вылетает с ошибкой исключения.Исключение NSRangeException при удалении строки UITableView

-(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

+1

Это потому, что, как говорится в ошибке, ваш 'loadRemainderArray' пуст, и вы пытаетесь удалить из него объект. – Zen

ответ

0

причина заключается в том, что вы получаете ошибки, потому что ваш массив пуст причины это может быть пустым:

  1. Вы не инициализировать массив:

    self.loadRemainderArray = [[NSMutableArray alloc]init] 
    
  2. Вы не добавили объект в массив:

    [self.loadRemainderArray addObject:yourObject]; 
    
0

Массив вы пытаетесь удалить объект из пуст или не инициализирован. Вы должны защитить свой код следующим образом:

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

Это не решает проблему, хотя - вы должны найти причину, чтобы понять, почему массив пуст или ноль

0

Эта линия ведет к вашей аварии , [self.loadRemainderArray removeObjectAtIndex:indexPath.row];. Потому что вы пытаетесь удалить объект из пустого массива. Просто напишите этот код.

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

Я думаю, что вы сделали ошибку в каком-то другом месте, так что в этом методе массив пуст. Обратитесь к loadRemainderArray в ваш код.

0

Возможно, существует две причины, по которым вы получаете это исключение.

  1. Вы забыли [NSMutableArray alloc] init] ваш массив. И Без инициализации добавлены объекты к нему. self.loadRemainderArray = [NSMutableArray alloc] init];

  2. Вы не добавили объектов в этот массив.

+0

Когда этот делегат 'commitEditingStyle:' вызовет? Как вы говорите, он не добавлял объект в массив? что между вашим ответом и ответом Абдуллы Шафике? – Mani

+0

Я просто добавил немного больше описания для первого пункта. И я просто рассказал возможности для этого исключения. – Palak

+0

Вы рассказывали о 'Без инициализации добавленных объектов к нему' этот пункт? скажите сейчас, что вы добавляете в качестве дополнительной точки? – Mani

Смежные вопросы