У меня есть настройка базовых данных, в которой у каждого объекта есть NSDate, и метод, который возвращает дату в виде строки (т. Е. "15.12.2009"). Объекты отображаются в виде таблицы, и я хотел бы отсортировать их по разделам на основе строки даты. Пример кода Apple в приложении CoreDataBooks использует эту строку:
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:@"author" cacheName:@"Root"];
Поэтому я изменил его и использовал эту строку в своем проекте:
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:@"workoutDateString" cacheName:@"Root"];
Где "workoutDateString" - это метод, который возвращает дату объекта тренировки в виде строки. Моя основная настройка данных работает отлично, когда я оставляю sectionNameKeyPath как nil, и я также знаю, что мой метод workoutDateString работает правильно. Но когда я устанавливаю sectionNameKeyPath на workoutDateString, он не только не отображает заголовки разделов, но каждый раз, когда я добавляю объект тренировки, программа вылетает с этой ошибкой:
Завершение работы приложения из-за необработанного исключения «NSInternalInconsistencyException», причина: «Неверное обновление: недопустимое количество строк в разделе 1. Количество строк, содержащихся в существующем разделе после обновления (3), должно быть равно количеству строк». содержится в этом разделе перед обновлением (1), плюс или минус количество строк, вставленных или удаленных из этого раздела (0 вставлено, 0 удалено). '
Это мой первый настоящий проект для iPhone, и у меня нет опыта настройки разделов таблицы. И поверьте мне, я потратил немало времени на поиск решений в Google.