Я не уверен, что это FetchedResultController.
В какой-то момент вызов строки вставки и удаления попросит перезагрузить tableView, затем он запросит методы делегата и источника данных для numberOfRowsInSection, cellForRowAtIndexPath и т. Д.
Вероятно, происходит то, что модель и tableView не синхронизированы, и это заставляет контроллер выдавать предупреждение.
[tableView beginUpdates];
if (editingStyle == UITableViewCellEditingStyleDelete) {
NSMutableDictionary *item = [self.itemList objectAtIndex:indexPath.row];
// Delete the row from the data source
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
[self.itemList removeObjectAtIndex:indexPath.row];
}
[tableView endUpdates];
Попробуйте что-то вроде этого, где все изменения в tableView иБазовая модель обернута в beginUpdates и endUpdates.Это заставит tableView ждать при рисовании ячейки, пока вы не дадите 'OK'.
Если вышеописанное не так, то здесь я обычно работаю с несколькими разделами в tableView.
В вашем заголовке вы объявляете перечисление typedef для разделов;
typedef enum {
SectionTypeName,
SectionTypeAge,
SectionTypeSkills,
} SectionType;
//in the implementation
switch (indexPath.section) {
case SectionTypeName:
//do thing in the name section
break;
case SectionTypeAge:
//do thing in the name section
break;
case SectionTypeSkills:
//do thing in the name section
break;
default:
break;
}
У меня есть switch () почти в каждом методе делегата / источника данных tableView.Это позволяет очень легко определить, какой раздел обрабатывается и что он делает.