Я реализует метод для удаления строки из моего Tableview на основе объекта домена, но я получаю сообщение об ошибке после deleteRowsAtIndexPath вызова: анимированныеUITableView deleteRowsAtIndexPath, когда обновлять модель?
Blockquote нагрузочного приложение из-за неперехваченное исключение «NSInternalInconsistencyException», почему-то : «Неверное обновление: недопустимое количество строк в разделе 0. Количество строк, содержащихся в существующем разделе после обновления (2), должно быть равно количеству строк, содержащихся в этом разделе, перед обновлением (2), плюс или минус количество вставленных или удаленных строк из этого раздела (0 вставлено, 1 удалено).
Итак, я подумал: «Хорошо, я слишком быстро обновляю модель». Код:
- (void)deleteItem:(Item *)item {
NSInteger index = [items indexOfObject:item]; // items is the model a NSArray
if (index != NSNotFound) {
NSMutableArray *itemEditable = [items mutableCopy];
[itemEditable removeObjectAtIndex:index];
self.items = itemEditable;
NSIndexPath *indexToDelete = [NSIndexPath indexPathForRow:index inSection:0];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexToDelete] withRowAnimation:UITableViewRowAnimationMiddle];
}
}
А потом изменить код, чтобы обновить модель после я называю deleteRowsAtIndexPath: анимированные
- (void)deleteItem:(Item *)item {
NSInteger index = [items indexOfObject:item]; // items is the model a NSArray
if (index != NSNotFound) {
NSIndexPath *indexToDelete = [NSIndexPath indexPathForRow:index inSection:0];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexToDelete] withRowAnimation:UITableViewRowAnimationMiddle];
NSMutableArray *itemEditable = [items mutableCopy];
[itemEditable removeObjectAtIndex:index];
self.items = itemEditable;
}
}
Но это не решало, единственное, что меняется это число строк в сообщении об ошибке от 2 до 3.
Заключительное приложение Blockquote из-за неперехваченного исключения «NSInternalInconsistencyException», причина: «Неверное обновление: неверный номер строк в разделе 0. Количество строк, содержащихся в существующем разделе после обновления (3), должно быть равно количеству строк, содержащихся в этом разделе, перед обновлением (3), плюс или минус количество вставленных или удаленных строк из этого раздела (0 вставлено, 1 удалено). '
Где я могу обновить модель?
метод Добавлена numberOfRowsInSection
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [items count];
}
Модель должна быть обновлена перед deleteRowsAtIndexPath. Можете ли вы опубликовать метод numberOfRowsInSection? – Anna
Конечно, я могу, просто сделал это. –