#iphone #cocoa-touch
#iPhone #cocoa-touch
Вопрос:
я пытаюсь удалить ячейку из моего табличного представления, но она отображает исключение:
Завершение работы приложения из-за неперехваченного исключения 'NSInvalidArgumentException', причина: '*** -[RootViewController aBook]: нераспознанный селектор, отправленный экземпляру 0x3d217a0'
вот мой код:
- (недействительный)TableView:(UITableView *)TableView commitEditingStyle: (UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { если (editingStyle == UITableViewCellEditingStyleDelete) { NSLog(@"передача значений объекту"); Book * aBook = [AppDelegate.books объектатиндекс:indexPath.row]; NSLog(@"удаление"); [[самоучитель] removeObjectAtIndex:[строка indexPath]]; NSLog(@"удаление строки"); // Анимированное удаление NSArray *indexPaths = [NSArray arrayWithObject:indexPath]; [[self TableView] Удаляет ROWSATINDEXPATHS:indexPaths withRowAnimation:UITableViewRowAnimationFade]; }
элемент управления отображает исключение в 8-й строке после ввода слова «удаление». также выдается предупреждение о том, что «корневой контроллер просмотра не отвечает на aBook» помогите!!
Ответ №1:
Почему вы вызываете [selfbook]? Это локальный объект! Попробуйте [aBook removeObjectAtIndex: ]
Комментарии:
1. все еще выдает такое же исключение, когда я использовал aBook removeObjectAtIndex:[строка indexPath]];
Ответ №2:
Среда выполнения уже дает вам очень хорошее объяснение того, что не так: вы отправляете aBook
сообщение объекту типа RootViewController
(класс, в котором вы реализовали опубликованный код).
Итак, [self aBook]
недопустимо.
Кроме того, примите дополнительные ответы.
Комментарии:
1. хорошо!! я попробовал строку кода: aBook removeObjectAtIndex:[строка indexPath]]; предложено другими разработчиками, но по-прежнему выдает ту же ошибку!
2. также выдается предупреждение «Книга может не отвечать на removeobjectatindex». должно быть, я допустил ошибку, но я не могу ее отследить.
Ответ №3:
возможно, вы имеете в виду
[aBook removeObjectAtIndex:[indexPath row]];