Класс NSIndexSet представляет набор однозначных целых чисел и служит для обозначения номеров элементов упорядоченной коллекции вроде массива типа NSArray.

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

В качестве практического примера допустим, что требуется обратиться к элементам 1, 2, 3, 4, 8, 9 и 10 массива NSArray. Класс NSIndexSet позволяет выразить этот запрос в компактно реализованном и готовом к употреблению виде. Конкретная реализация достаточно прозрачна, но нетрудно представить, что в данном случае множество индексов может быть составлено из двух структур {1,4} и {8,3} типа NSRange, а методы класса NSIndexSet только приветствуют составление множества типа NSIndexSet из диапазонов.

Класс NSIndexSet является неизменяемым, тогда как изменяемым оказывается его подкласс NSMutablelndexSet. Простое множество типа NSIndexSet можно составить только из одного непрерывного диапазона непосредственно, передав структуру NSRange методу indexSetWithlndexesInRange :, а для составления более сложного множества индексов придется воспользоваться классом NSMutablelndexSet, чтобы присоединить дополнительные диапазоны. Для обхода (перечисления) значений индексов или диапазонов, указанных во множестве типа NSIndexSet, следует вызвать метод enumeratelndexesUsingBlock: или enumerateRangesUsingBlock: или же варианты этих методов.


 

 

 

Добавить комментарий