Удаление объекта CoreData, затем вызов [tableView reloadData] вызывает SIGABRT - PullRequest
1 голос
/ 22 августа 2010

Я поддерживаю удаление строк в UIView, который включает в себя tableView:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    if (editingStyle == UITableViewCellEditingStyleDelete) {
  [self.fetchedResultsController.managedObjectContext
            deleteObject:[self.fetchedResultsController
            objectAtIndexPath:indexPath]];
  NSError *error;
  if (![[self.fetchedResultsController managedObjectContext] save:&error]) {
   NSLog(@"Unresolved error %@, %@, %@", error, [error userInfo],
                    [error localizedDescription]);
  }
  else {NSLog(@"Apparently successful");}
  [self.tableView reloadData];
 }
}

Когда я пытаюсь это сделать, я получаю сообщение «Видимо успешное» в консоли, но затем SIGABRT в configureCell,Как будто где-то объект не был удален, и configureCell пытается представить отсутствующий объект.(Однако, когда я снова запускаю приложение, запись исчезла.)

Есть мысли?

1 Ответ

2 голосов
/ 22 августа 2010

У вас не должно быть этого [self.tableView reloadData] при использовании NSFetchedResultsController.

Когда вы удаляете объект, вам будет вызван правильный метод NSFetchedResultsControllerDelegate, где вы должны позаботиться об обновлении представления таблицы.

Создайте пустое Приложение для навигации и установите флажок Использовать базовые данные для хранения . То, что вы получите, это пустой проект, который делает все это правильно. Это будет хороший пример.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...