У меня есть класс контроллера TableView, который использует контроллер извлеченных результатов для отображения списка «терпеливых» сущностей, взятых из модели базовых данных. Разделы этой таблицы взяты из атрибута пациента, называемого «местоположение». Вот дескриптор сортировки для запроса на выборку:
NSSortDescriptor *locationDescriptor = [[NSSortDescriptor alloc] initWithKey:@"location" ascending:YES];
NSSortDescriptor *lastNameDescriptor = [[NSSortDescriptor alloc] initWithKey:@"lastName" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:locationDescriptor, lastNameDescriptor, nil];
Вот код инициализации для FRC:
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:@"location" cacheName:@"List"];
Когда я хочу добавить новый объект «пациент» - я нажимаю кнопку «Добавить», которая затем помещает контроллер представления «Добавить нового пациента» в стек навигации.
Первый пациент, которого я добавил, работает нормально.
Если я добавлю второго пациента - приложение иногда будет зависать со следующей ошибкой:
2010-03-22 14: 42: 05.270 Пациенты [1126: 207] Серьезная ошибка приложения. Исключительная ситуация при обработке изменения базовых данных: * - [NSCFArray insertObject: atIndex:]: index (1) за пределами (1) с userInfo (null)
2010-03-22 14: 42: 05.272 Пациенты [1126: 207] * Завершение работы приложения из-за необработанного исключения «NSRangeException», причина: «*** - [NSCFArray insertObject: atIndex:]: index (1)» bounds (1) '
Похоже, это происходит только в том случае, если у пациента добавлено местоположение (если ни одно из них не добавлено, то по умолчанию это местоположение неизвестно). Похоже, что-то связано с сортировкой местоположения. Например, если первое местоположение пациента = палата 14, а второе = палата 9, то оно обязательно падает.
Мне интересно, это как-то связано с тем, как я прошу контроллер извлеченных результатов отсортировать имена разделов?
Эта ошибка сводит меня с ума, и я просто не могу понять это. Любая помощь будет принята с благодарностью!