Я использую идею Matt Gallagher 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).'
ОК, я понимаю, что он говорит... строка не удаляется (я бы предположил), потому что я не пересылаю сообщение в нужное место (так как я переместил какой-то код из его "нормального" местоположения)... у кого-нибудь есть идея, какой? Я полностью в тупике.