Я следовал учебному пособию по основным данным на сайте разработчиков Apple , и все хорошо, пока мне не нужно что-то добавить в извлеченный магазин. Я получаю эту ошибку после успешной сборки и загрузки при попытке добавить новый элемент в список:
Завершение приложения из-за необработанного исключения «NSInternalInconsistencyException», причина: «Неверное обновление: недопустимое количество строк в разделе 0. Число строк, содержащихся в существующем разделе после обновления (0), должно быть равно количеству строк содержится в этом разделе перед обновлением (0), плюс или минус количество строк, вставленных или удаленных из этого раздела (1 добавлено, 0 удалено).
Из-за того, что выборка проходит нормально, и что если я заменю выборку на eventList = [[NSMutableArray alloc] init]
, она будет работать, как и ожидалось (без настойчивости, конечно), я склонен полагать, что проблема заключается не в создании Изменяемый массив правильно. Вот проблемная часть кода:
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Event" inManagedObjectContext:managedObjectContext];
[request setEntity:entity];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"creationDate" ascending:NO];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[request setSortDescriptors:sortDescriptors];
[sortDescriptors release];
[sortDescriptor release];
NSError *error;
NSMutableArray *mutableFetchResults = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
if (mutableFetchResults = nil) {
//Handle the error
}
[self setEventList:mutableFetchResults];
[mutableFetchResults release];
[request release];
Я попытался переключить NSArray
s во втором блоке с помощью NSMutableArray
s, но я все еще получаю ту же ошибку.
Для справки, фрагмент кода, который выдает ошибку, когда я пытаюсь добавить запись, находится здесь:
[eventList insertObject:event atIndex:0];
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
[self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
[self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:YES];
ошибка при вызове insertRowsAtIndexPaths
.
Заранее спасибо за любую помощь
- РЕДАКТИРОВАТЬ ДОБАВИТЬ -
Следует отметить, что количество строк вызывается путем возврата [eventList count]