我试图弄清楚如何创建一组索引(例如,1,2,3) 然后在
中使用它- (void)selectRowIndexes:(NSIndexSet *)indexes byExtendingSelection:(BOOL)extend
这是(NSIndexSet *)indexes
我不知道如何使用/创建/填充索引1,2,3。
我应该使用类方法还是实例方法?
我尝试了很多方法,但我不知道我在做什么......
答案 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:
请参阅NSIndexSet和NSMutableIndexSet类引用。
答案 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];