Я использую NSFetchedResultsController.Ранее у меня была похожая проблема, когда в базе данных нет записей для табличного представления, но затем она создается, и оказалось, что должен быть хотя бы один раздел, поэтому я исправил это.Но теперь происходит сбой, когда у меня есть, например, два раздела, каждый с одной строкой, и я удаляю одну строку, поэтому раздел должен быть пропущен -> сбой.В нем говорится, что количество разделов перед обновлением (2) не равно числу удаленных (0).
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
// Return 1 if the fetchedResultsController section count is zero
return [[fetchedResultsController sections] count] ? : 1;
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
// check if we really have any sections in the managed object:
if (!fetchedResultsController.sections.count) return @"Persoonlijk";
id <NSFetchedResultsSectionInfo> sectionInfo = [[fetchedResultsController sections] objectAtIndex:section];
return [sectionInfo name];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// check if we really have any sections in the managed object:
if (!fetchedResultsController.sections.count) return 0;
id <NSFetchedResultsSectionInfo> sectionInfo = [[fetchedResultsController sections] objectAtIndex:section];
return [sectionInfo numberOfObjects];
}
Обновление Метод, в котором строка удаляется:
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Delete schedule
NSManagedObjectContext *context = [fetchedResultsController managedObjectContext];
[context deleteObject:[fetchedResultsController objectAtIndexPath:indexPath]];
// Save the context.
NSError *error = nil;
if (![context save:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
exit(-1);
}
}
}