Cocoa NSIndexSet:多个索引。如何创建索引集,多个索引?

时间:2011-05-10 19:19:43

标签: objective-c cocoa

我试图弄清楚如何创建一组索引(例如,1,2,3) 然后在

中使用它
- (void)selectRowIndexes:(NSIndexSet *)indexes byExtendingSelection:(BOOL)extend

这是(NSIndexSet *)indexes我不知道如何使用/创建/填充索引1,2,3。 我应该使用类方法还是实例方法?

我尝试了很多方法,但我不知道我在做什么......

5 个答案:

答案 0 :(得分:73)

如果索引是连续的,就像你的例子中一样,你可以使用它:

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

如果没有,请创建一个可变索引集并逐个添加索引(或范围):

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

答案 1 :(得分:7)

对于包含单个索引的简单索引集或可由范围表示的一组索引(即1,2,3),您可以使用NSIndexSet initWithIndex:或{创建它们{1}}方法(或其工厂方法对应物)。如果要创建更复杂的索引集(即1,5,7,8,9),则需要使用NSMutableIndexSet,以便在创建对象后添加索引和范围。

此代码将创建一个包含索引1,2和3的索引集:

initWithIndexesInRange:

请参阅NSIndexSetNSMutableIndexSet类引用。

答案 2 :(得分: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)

答案 3 :(得分:0)

以下是借助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];

答案 4 :(得分:0)

还有

[NSIndexSet indexSetWithIndex:1];
相关问题