Cocoa NSIndexSet: несколько индексов. Как создать набор индексов, несколько индексов?
Я пытаюсь выяснить, как создать набор индексов let say (1, 2, 3)
затем используйте его в
- (void)selectRowIndexes:(NSIndexSet *)indexes byExtendingSelection:(BOOL)extend
Это (NSIndexSet *)indexes
Я не знаю, как использовать/создавать/заполнять с помощью индексов 1, 2, 3.
Должен ли я использовать метод класса или метод экземпляра?
Я пробовал целую кучу способов, но я понятия не имею, что я делаю...
Ответы
Ответ 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];