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

Cocoa

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

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

Cocoa nested arrays

Индекс пути. Основы

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

Вы можете создать индекс путь, используя один из индексов или массив в C-стиле значений NSUInteger. Листинг 1 показывает, как создать индекс путь Bill Т.

Листинг 1 Создание индекса пути из массива

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

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

Использование индекса пути

NSIndexPath предоставляет методы для запроса элементов в пути. Например, indexAtPosition: возвращает индекс хранящийся в заданной позиции в индексе пути. Вы также можете создавать новые индекс пути путем добавления нового индекса или удаления последнего индекса. Несколько классов используют индекс пути широко управляя их содержимым. NSTreeController является одним из таких примеров.

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

 
 
homeЗаметили ошибкукарта сайта 
   Made on a Mac