У меня есть UITableView
, который использует 2 NSFetchedResultsControllers
.Каждый NSFetchedResultsController
имеет только один раздел.Однако таблица имеет 4 раздела.Я заполняю 4-й раздел таблицы результатами одного из NSFetchedResultsControllers
.Пока все отлично работает.Но если пользователь удалит первую ячейку в первом разделе, NSFetchedResultsControllers
будут изменены.Строки в последнем разделе таблицы могут быть удалены.Когда вызывается этот метод:
- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject
atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type
newIndexPath:(NSIndexPath *)newIndexPath
{
UITableView *tableView = self.tableView;
switch(type) {
case NSFetchedResultsChangeInsert:
[tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationFade];
break;
case NSFetchedResultsChangeDelete:
NSLog(@"section: %d, row: %d", [newIndexPath section], [newIndexPath row]);
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
break;
...
}
Секция всегда равна 0, потому что это секция NSFetchedResultsControllers
.Таким образом, раздел не совпадает с правильным в табличном представлении.
Есть ли обходной путь?Я бы в основном хотел изменить секцию NSFetchedResultsController
на 3 вместо 0.