Испытывает небольшую странность в получении NSIndexPaths и надеется, что опытный читатель сможет объяснить.
Базовый сценарий - это UITableView, данные поступают через NSFetchedResultsController.Я пробую несколько подходов к достижению расширения / свертывания разделов. Например, в табличном представлении изначально отображаются только представления заголовков разделов.Пользователь нажимает на заголовок раздела, затем строки для этого раздела вставляются в tableView.
Почему это не работает должным образом?Предположим, мы передаем жизнеспособный sectionIndex, и в нашем разделе есть хотя бы одна существующая строка в модели.В целях иллюстрации у нас есть два пользовательских класса управляемых объектов (назовем их Parent & Child):
- (void)expandSectionWithIndex:(NSInteger)sectionIndex
{
NSIndexPath *pathToFirstRow = [NSIndexPath indexPathForRow:0 inSection:sectionIndex];
Child *aChild = [[self fetchedResultsController] objectAtIndexPath:pathToFirstRow];
NSSet *siblingGroup = [[aChild parent] children]; //assume we get a set of children
//logged here, pathToFirstRow = [1, 0];
NSMutableArray *pathsToInsert = [[NSMutableArray alloc] init];
for (Child *childToInsert in siblingGroup)
{
NSIndexPath *insertionPath = [[self fetchedResultsController] indexPathForObject:childToInsert];
[pathsToInsert addObject:insertionPath];
//logged here insertionPath = [0, 1];
}
[[self tableView] beginUpdates];
[[self tableView] insertRowsAtIndexPaths:pathsToInsert withRowAnimation:UIViewAnimationTop];
[[self tableView] endUpdates];
}
Предполагается, что раздел, который я передаю, имеет одну строку, и что при наблюдении отладчика мой aChildи childToInsert - один и тот же объект, почему indexPath, возвращаемый для идентичного объекта в моем NSFetchedResultsController, отличается, когда регистрируется внутри моего цикла?
Я могу вспомнить дюжину работ- но я хочу знать, почему ...