У меня небольшая проблема с моим UITableViewController или NSFetchedResultsController.Я не уверен, в чем проблема, но я предполагаю, что это UITableViewController.
Как я уже сказал, я использую NSFetchedResultsController для заполнения своих данных в UITableViewController.Данные сортируются по дате, а также отображаются в разделах по дате-году, например, май 2010 / июнь 2010 / и так далее.Это отображается как заголовок раздела.
Теперь, когда я добавляю новые данные, он автоматически использует текущую дату по умолчанию, но если я хочу использовать дату, которой в данный момент нет в списке разделов, например, апрель 2010 г. (в настоящее время май и июнь всписок), то это не отображается правильно.Только когда я выйду из приложения и запустлю его снова, он покажет новые заголовки разделов, и все в порядке.
Так что мне как-то нужно иметь возможность обновить свой список или обновить его.Просто добавив его в контекст и изменив его, похоже, не обновить его.
Опять же, я не уверен, что мне нужно обновить, если это мой объект NSFetchedResultsController или UITableViewController.
ОБНОВЛЕНИЕ № 1:
Я только что понял, что в этом методе есть исключение:
- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller
{
// The fetch controller has sent all current change notifications, so tell the table view to process all updates.
[self.tableView endUpdates];
}
Вот куда я перемещаю данные:
- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath
{
UITableView *tableView = self.tableView;
switch(type)
{
case NSFetchedResultsChangeInsert:
[tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationFade];
break;
case NSFetchedResultsChangeDelete:
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
break;
case NSFetchedResultsChangeUpdate:
// [self configureCell:[tableView cellForRowAtIndexPath:indexPath] atIndexPath:indexPath];
break;
case NSFetchedResultsChangeMove:
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
// Reloading the section inserts a new row and ensures that titles are updated appropriately.
[tableView reloadSections:[NSIndexSet indexSetWithIndex:newIndexPath.section] withRowAnimation:UITableViewRowAnimationFade];
break;
}
}
ЭтоМетод в значительной степени взят из примера CoreDataBooks от Apple.И это ошибка:
Серьезная ошибка приложения.Исключение было получено от делегата NSFetchedResultsController во время вызова -controllerDidChangeContent :.*** - [NSMutableArray removeObjectAtIndex:]: индекс 1 за пределами [0 .. 0] с userInfo (null)
И после этого режим редактирования (где появляется кнопка удаления) не работаетработать больше.
Спасибо.