Мое табличное представление заполняется из массива, содержащего данные в основных данных, я хочу удалить строки при соответствующем обновлении основных данных, вот мой код удаления.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Delete the row from the data source.
NSManagedObject *selectedObject = [arrayList objectAtIndex:[indexPath row]];
[managedObjectContext deleteObject:selectedObject];
[arrayList removeObjectAtIndex:[indexPath row]];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
}
Однако япри нажатии кнопки «Удалить» появляется следующая ошибка:
*** Assertion failure in -[UITableView _endCellAnimationsWithContext:], /SourceCache/UIKit_Sim/UIKit-1448.89/UITableView.m:995
*** 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 (4) must be equal to the number of rows contained in that section before the update (4), plus or minus the number of rows inserted or deleted from that section (0 inserted, 1 deleted).'
Мой источник данных - arrayList
, содержащий NSManagedObjects, извлеченные из основных данных.
Идеи?Заранее спасибо!
Обновление:
Теперь удаление может работать после того, как я удаляю данные в arrayList, но данные в основных данных не удалялись, соответственно, при повторном запуске приложениясписок остается прежним.