古いプロジェクトの場合、tableView commitEditingStyleメソッドでセルを削除した直後にクラッシュすることがある。
古いプロジェクトには、セルの削除処理前後にセル更新開始をUITableViewに通知するbeginUpdates、セル更新終了をUITableViewに通知するendUpdates、セル数の更新処理 deleteRowsAtIndexPathsが記述されていないことがあるので、これを記述することにより、セルが適切に削除されるようになる。
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
[self.tableView beginUpdates];
// セルの削除処理を記述
[self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
[self.tableView endUpdates];
}
}
- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller {
[self.tableView reloadData];
}