Если вы говорите о стандартном iOS UITableView, то ваш путь индекса является экземпляром NSIndexPath и будет иметь две записи: индекс section и индекс row . Если я вас правильно понимаю, вы хотите уменьшать индекс row на 1 каждый раз, когда вы заполняете ячейку табличного представления. (Я предполагаю, что у вас есть только один раздел, или вам нет дела до индекса раздела - если это не так, пожалуйста, отредактируйте ваш вопрос.)
По сути, вам нужно создать новый экземпляр NSIndexPath с вашими скорректированными индексами, а затем использовать его для запроса к вашему контроллеру полученных результатов. Примерно так будет работать (не проверено):
NSUInteger indexes[2];
[indexPath getIndexes:indexes];
indexes[1]--;
NSIndexPath * adjustedIndexPath = [[NSIndexPath alloc] initWithIndexes:indexes
length:2];
NSManagedObject * managedObject = [self.fetchedResultsController
objectAtIndexPath:adjustedIndexPath];
Это в основном делает следующее:
- Извлекает существующие индексы в массив C NSUIntegers
- Уменьшает последний индекс (в позиции 1 - индекс строки) на 1
- Создает новый NSIndexPath с настроенными индексами из массива C
- Извлекает управляемый объект, используя новый путь индекса
Обратите внимание, что это не касается индекса раздела вообще, и поэтому будет корректировать каждую ячейку в вашей таблице, независимо от того, находится ли она в вашем первом разделе. Если это не то, что вам нужно, либо оберните корректировку в условное выражение (например, if([indexPath indexAtPosition:0] == 0)
), либо добавьте свою собственную пользовательскую логику.