2013-10-17 50 views
7

我有一个int64_t值的集合,我需要设置一个索引。我以前使用的:创建一个给定的最小值和最大值的NSRange

NSIndexSet *set = [NSIndexSet indexSetWithRange:NSMakeRange(location, length)]; 

使指数集,但这次它我不清楚我怎么会根据我掌握的信息做到这一点。

细节:我有一个值的集合。我知道集合中的最高值,集合中的最低值和集合中的值的数量。但是,这些值不一定是连续的。

例如,如果我有以下值:1,3,4,6,7,9我想创建一个集合,包括1和9之间的集合中的所有数字,即set = 1 -9。

我该怎么做?

编辑

我不应该说我有一个整数的“集合”,而 - 我有存储核心数据对象和每个对象都有一个与之关联的int64_t属性,所以不有一个指向实际的对象集合的指针,我想避免仅仅为了创建集合而获取对象。

+0

所以索引集应包含指数1,3,4,6,7,9?或者我误解了你的问题? –

+0

是的,所以我想知道如何创建1-9范围来实现此目的。 – jac300

回答

13

编辑:结果在讨论中,问题是如何创建一个范围 与给定的最小值和最大值。这与

NSMakeRange(min, max + 1 - min) 
+0

对不起,我想我的问题还不清楚。我只是做了一个编辑。 – jac300

+0

谢谢 - 我认为我的问题比这更基本 - 我已经拥有最大值和最小值,我只是看不到如何创建具有最小值和最大值的范围。 – jac300

+1

@ user1697845:'NSMakeRange(min,max + 1 - min)'? –

0

完成只需使用一个NSMutableIndexSet并将它们添加一个接一个的方法addIndex

0

你可以做这样的事情:

NSArray *array = @[@1,@3,@4,@6,@7,@9]; 

NSMutableIndexSet *set = [[NSMutableIndexSet alloc] init]; 
for (NSNumber *value in array) { 
    [set addIndex:[value integerValue]]; 
} 
相关问题