创建具有给定最小值和最大值的NSRange

时间:2013-10-17 15:01:56

标签: objective-c nsrange nsindexset

我有一个int64_t值的集合,我需要创建一个索引。我以前用过:

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

制作索引集,但这一次我不清楚我将如何根据我的信息做到这一点。

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

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

我该怎么做?

修改

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

3 个答案:

答案 0 :(得分:17)

编辑:正如讨论中所述,问题是如何创建范围 具有给定的最小值和最大值。这是通过

完成的
NSMakeRange(min, max + 1 - min)

答案 1 :(得分:0)

只需使用NSMutableIndexSet,然后使用方法addIndex

逐个添加它们

答案 2 :(得分:0)

你可以这样做:

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

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