Подтвердить что ты не робот

Cocoa NSIndexSet: несколько индексов. Как создать набор индексов, несколько индексов?

Я пытаюсь выяснить, как создать набор индексов let say (1, 2, 3) затем используйте его в

- (void)selectRowIndexes:(NSIndexSet *)indexes byExtendingSelection:(BOOL)extend

Это (NSIndexSet *)indexes Я не знаю, как использовать/создавать/заполнять с помощью индексов 1, 2, 3. Должен ли я использовать метод класса или метод экземпляра?

Я пробовал целую кучу способов, но я понятия не имею, что я делаю...

4b9b3361

Ответ 1

Если индексы последовательны, как в вашем примере, вы можете использовать это:

NSIndexSet *indexSet = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, 3)];

Если нет, создайте изменяемый набор индексов и добавьте индексы (или диапазоны) один за другим:

NSMutableIndexSet *indexSet = [NSMutableIndexSet indexSet];
[indexSet addIndex:3];
[indexSet addIndex:5];
[indexSet addIndex:8];

Ответ 2

Для простых наборов индексов, которые содержат один индекс или группу индексов, которые могут быть представлены диапазоном (т.е. 1,2,3), вы можете создавать их с использованием методов NSIndexSet initWithIndex: или initWithIndexesInRange: (или их factory). Если вы хотите создать более сложный набор индексов (т.е. 1,5,7,8,9), вам нужно будет использовать NSMutableIndexSet, чтобы вы могли добавлять индексы и диапазоны после создания объекта.

Этот код создаст индексный набор, содержащий индексы 1, 2 и 3:

[[NSIndexSet alloc] initWithIndexesInRange:NSMakeRange(1,3)];

Смотрите NSIndexSet и NSMutableIndexSet класса.

Ответ 3

В Swift 3

let indexSet = IndexSet(integersIn: 1...3)

или для одного значения:

let indexSet = IndexSet(integer: 1)

или для следующих значений:

var indexSet = IndexSet()
indexSet.insert(1)
indexSet.insert(3)
indexSet.insert(9)

Ответ 4

Ниже приведен пример удаления выбранного индекса из локального массива с помощью NSMutableIndexSet

NSArray * arrSelectedSongs = [self.playListTblView indexPathsForSelectedRows];
 //Delete From Array
 NSMutableIndexSet *indexSet = [[NSMutableIndexSet alloc]init];
 for (NSIndexPath *indexPath in arrSelectedSongs)
 {
   [indexSet addIndex:indexPath.row];
 }
 [self.arrFiles removeObjectsAtIndexes:indexSet];

Ответ 5

Там также

[NSIndexSet indexSetWithIndex:1];