Если бы мне нужно было это сделать, я бы просто сдвинул путь к разделу на одну половину 32-разрядного типа int и переместил часть строки на другую. Да, это означает, что вы не можете иметь более 65535 элементов в строке (при его разборе я предположил целые числа без знака, так как строка / раздел никогда не будет отрицательным), но я возьму предполагаемый предел, намного больший, чем мне когда-либо понадобится, более волшебная константа в любой день.
Плюс это дешевле в вычислительном отношении.
Обычно в этой ситуации, хотя я настраивал свой контроллер табличного представления в качестве делегата для каждой ячейки, и ячейка может вызывать контроллер с любыми изменениями вместе с некоторым значением ключа, использованным для создания ячейки - в конце концов, когда вы заполняете ячейка, которую вы знаете, как получить доступ к вашему набору данных, чтобы извлечь значения. Черт возьми, вы даже можете просто сохранить IndexPath в ячейке, и он может перезвонить с этим. Причина, по которой я не стал бы использовать подход IndexPath или предыдущий метод, включающий выравнивание NSIndexPath в теге, заключается в том, что если вы когда-нибудь начнете динамически изменять строки, значения могут выровняться между NSndexPath, с которым вы создали ячейку, и значением для текущего набора данных. Намного лучше иметь какой-то ключ, который всегда логически вернет вас к нужным данным.