У меня есть базовый объект данных с рядом атрибутов, в том числе сумма (с плавающей запятой), категория общее (с плавающей запятой) и категория (строка)
Исходный ViewController использует FethchedResultsController для извлечения сущностей и сортирует их по категории, а затем по категории CategoryTotal. Пока проблем нет.
NSManagedObjectContext *moc = [self managedObjectContext];
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"Transaction" inManagedObjectContext:moc];
NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
[request setEntity:entityDescription];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(dateStamp >= %@) AND (dateStamp =< %@)", startDate, endDate];
[request setPredicate:predicate];
NSSortDescriptor *sortByCategory = [[NSSortDescriptor alloc] initWithKey:@"category" ascending:sortOrder];
NSSortDescriptor *sortByTotals = [[NSSortDescriptor alloc] initWithKey:@"categoryTotal" ascending:sortOrder];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortByTotals, sortByCategory, nil];
[request setSortDescriptors:sortDescriptors];
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:managedObjectContext sectionNameKeyPath:@"category" cacheName:nil];
aFetchedResultsController.delegate = self;
self.fetchedResultsController = aFetchedResultsController;
При выборе строки (tableView: didSelectRowAtIndexPath) загружается другой контроллер представления, который позволяет редактировать поле суммы для выбранного объекта.
Прежде чем вернуться к первому виду, categoryTotal обновляется на новую «сумму». Проблема возникает при возврате к первому контроллеру представления, приложение бомбит с
Серьезная ошибка приложения. Исключительная ситуация при обработке изменения базовых данных: Неверное обновление: недопустимое количество строк в разделе 0. Число строк, содержащихся в существующем разделе после обновления (1), должно быть равно числу строк, содержащихся в этом разделе до обновления. (1), плюс или минус количество строк, вставленных или удаленных из этого раздела (0 вставлено, 1 удалено). с userInfo (ноль)
Программа получила сигнал: «EXC_BAD_ACCESS».
Это, похоже, любезно предоставлено NSSortDescriptor * sortByTotals = [[NSSortDescriptor alloc] initWithKey: @ "categoryTotal" ascending: sortOrder];
Если я удаляю это, все работает как положено, но, очевидно, без сортировки, которую я хочу.
Я предполагаю, что это связано с изменением порядка сортировки из-за изменения категории (удаление / вставка), но не могу найти, как это исправить. Я проверил, что значения корректно изменяются во втором представлении, так что это выглядит вплоть до путаницы fetchedResultsController. Если значение categoryAmount изменено на значение, не меняющее порядок сортировки, ошибка не генерируется
Я физически не изменяю (т.е. удаляю) количество элементов, возвращаемых fetchedResultsController ... единственная другая проблема, которую я могу найти, которая, кажется, вызывает эту ошибку
Любые идеи будут приветствоваться
Спасибо, AJ