Я использую идею Мэтта Галлахера GenericTableViewController
для управления моим UITableViews
. Мой источник данных - NSFetchedResultsController
.
http://cocoawithlove.com/2008/12/heterogeneous-cells-in.html
Все работает нормально, пока я не попытаюсь удалить ячейку.
У меня есть следующий код в моем контроллере вида:
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Delete the managed object.
NSManagedObjectContext *context = [wineryController managedObjectContext];
[context deleteObject:[wineryController objectAtIndexPath:indexPath]];
NSError *error;
if (![context save:&error]) {
// Handle the error.
}
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
}
Последняя строка вылетает с довольно подробным объяснением в консоли:
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException',
reason: 'Invalid update: invalid number of rows in section 0. The number of rows
contained in an existing section after the update (5) must be equal to the number
of rows contained in that section before the update (5), plus or minus the number
of rows inserted or deleted from that section (0 inserted, 1 deleted).'
Хорошо, я понимаю, о чем идет речь ... строка не удаляется (я бы предположил), потому что я не пересылаю какое-то сообщение в нужное место (так как я переместил некоторый код из «нормального» места ) ... у кого-нибудь есть идеи, какой? Я в полном недоумении.