Индексные пути: хранение пути через вложенные массивы

Индексные пути хранят путь через вложенный набор массивов и используются для получения объекта в более сложной иерархии набора, такой как дерево. Рисунок 1, например, показывает вложенный набор массивов, представляющий иерархию гипотетической компании.

  Вложенные массивы рисунка 1 и индексные пути

Индексные основные принципы пути

Если Вы считаете иерархию гипотетической компании показанной на рисунке 1, корневой массив состоит из единственной записи для CEO. Массив ниже этого состоит из различных вице-президентов. Ниже каждого вице-президента массив директоров, и т.д. Если Вы хотите сохранить позицию определенного сотрудника на Европе маркетинговая команда, например, простой индекс недостаточно. Вместо этого путь через вложенные массивы необходим. В этом случае Билл Т. может быть представлен индексным путем 0.0.1.1.2.

Можно создать индексное использование пути из единственного индекса или из массива C-стиля NSUInteger значения. Перечисление 1 показывает, как создать индексный путь к счету T.

Перечисление 1  , Создающее индекс, соединяет каналом от массива

NSUInteger arrayLength = 5;
NSUInteger integerArray[] = {0,0,1,1,2};
NSIndexPath *aPath = [[NSIndexPath alloc] initWithIndexes:integerArray length:arrayLength];

Можно также создать индексный путь автоматически из многих более сложных классов набора иерархии. Посмотрите indexPath метод NSTreeNode класс для примера.

Используя индексные пути

NSIndexPath обеспечивает методы для запросов элементов по пути. Например, indexAtPosition: возвращает индекс, сохраненный в данной позиции по индексному пути. Можно также создать новые индексные пути путем добавления нового индекса или удаления последнего индекса. Несколько классов используют индексные пути экстенсивно для управления их содержанием. NSTreeController один такой пример. Для получения дополнительной информации о NSTreeController и индексные пути, посмотрите, что Привязка Какао Программирует Темы.

В iOS, UITableView и его делегат и источник данных используют индексные пути, чтобы управлять большой частью их содержания и обработать взаимодействие с пользователем. Для помощи с этим UIKit добавляет интерфейсы программирования к NSIndexPath включить строки и разделы табличного представления более полно в индексные пути. Для получения дополнительной информации посмотрите дополнения NSIndexPath UIKit. Например, индексные пути используются для обозначения пользовательских выборов с помощью tableView:didSelectRowAtIndexPath: метод делегата.