Ошибка :

* Завершение работы приложения из-за неперехваченного исключения 'NSRangeException', причина: '* - [__ NSArrayM objectAtIndex:]: индекс 1 за пределами [0 .. 0]'

Вот мой код :

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *simpleTableIdentifier = @"AartiTableViewCell";
    AartiTableViewCell *cell = (AartiTableViewCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
    if (cell == nil)
    {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"AartiTableViewCell" owner:self options:nil];
        cell = [nib objectAtIndex:0];
        cell.btnFav.userInteractionEnabled=YES;            
    }

    NSString *strfavarry = [NSString stringWithFormat:@"SELECT  Title FROM %@ WHERE identifire='%@'",[FavTablename objectAtIndex:indexPath.row],[FavIdent objectAtIndex:indexPath.row]];
    FavTitle = [FavData lookupAllForSQL:strfavarry];

    cell.selectionStyle=UITableViewCellSelectionStyleNone;
    cell.index = indexPath.row;
    cell.btnFav.tag=indexPath.row;
    [cell.btnFav setBackgroundImage:[UIImage imageNamed:@"unfav.png"] forState:UIControlStateNormal];
    [cell.btnFav addTarget:self action:@selector(handleFavouriteButton:) forControlEvents:UIControlEventTouchUpInside];        
    cell.lbltitle.text=[FavTitle objectAtIndex:indexPath.row];   

    return cell;
}
-2
seggy 6 Сен 2016 в 15:53

3 ответа

Лучший ответ
 NSString *strfavarry = [NSString stringWithFormat:@"SELECT  Title FROM %@ WHERE identifire='%@'",[FavTablename objectAtIndex:indexPath.row],[FavIdent objectAtIndex:indexPath.row]];

В этой строке выдается ошибка, потому что количество строк больше, чем это значение счетчика массива.

Пожалуйста, проверьте количество строк и количество массивов FavTablename и FavIdent совпадает или нет.

0
Pooja Srivastava 6 Сен 2016 в 13:05

Эта ошибка означает, что вы пытаетесь получить элемент из массива с индексом 1 и выходите за пределы.

Вероятно проблема в следующем:

[FavTablename objectAtIndex:indexPath.row]

Перед чтением из него проверьте, есть ли в вашем массиве какие-либо элементы.

Чтобы быть уверенным в своей проблеме, включите точку останова исключения:

enter image description here

0
Marco Santarossa 6 Сен 2016 в 13:03

Как вы сказали, FavTitle и Favtablename имеют одинаковое количество элементов. Поэтому попробуйте поместить обработку исключений в cellForRowAtIndexPath следующим образом: -

if(FavTitle.count > indexPath.row){
        cell.lbltitle.text=[FavTitle objectAtIndex:indexPath.row];
    }
0
pkc456 6 Сен 2016 в 14:48