Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios indexesOfObjectsPassingTest:|一旦找到索引,如何检查它们是否是连续的?_Ios_Objective C - Fatal编程技术网

Ios indexesOfObjectsPassingTest:|一旦找到索引,如何检查它们是否是连续的?

Ios indexesOfObjectsPassingTest:|一旦找到索引,如何检查它们是否是连续的?,ios,objective-c,Ios,Objective C,我正在使用indexesOfObjectsPassingTest成功地获取所需的索引 对于找到的索引,我想检查是否有任何索引是连续的。如果是的话,我想得到序列中的第一个和最后一个 NSMutableArray *domesticSetResult = [[NSMutableArray alloc]init]; domesticSetResult = nil; NSMutableArray *matches = [NSMutableArray ar

我正在使用indexesOfObjectsPassingTest成功地获取所需的索引

对于找到的索引,我想检查是否有任何索引是连续的。如果是的话,我想得到序列中的第一个和最后一个

        NSMutableArray *domesticSetResult = [[NSMutableArray alloc]init];
        domesticSetResult = nil;

        NSMutableArray *matches = [NSMutableArray array];

        NSIndexSet *domesticIndex = [self.days indexesOfObjectsPassingTest: ^(id obj, NSUInteger idx, BOOL *stop)
                              {
                                  if ([obj isDomestic])
                                      return YES; // found a match, keep going
                                  else
                                      return NO; // keep looking
                              } ];

        [domesticIndex enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL * _Nonnull stop) {
            [matches addObject:[self.days objectAtIndex:idx]];
        }];
        NSLog(@"\n\nDomestic indexes: %@\n\n", domesticIndex);
例如,日志生成

国内指数:[指数数量:3(在2个范围内),指数:(0 3-8)]

对于索引0,序列中只有1,因此我希望返回它。 对于索引3-8,我想返回3和8


我可以列举索引,但不确定如何检查索引是否按顺序排列,以及如何只获取每个序列开头和结尾的索引

NSIndexSet
为您完成这项工作

        NSMutableArray *domesticSetResult = [[NSMutableArray alloc]init];
        domesticSetResult = nil;

        NSMutableArray *matches = [NSMutableArray array];

        NSIndexSet *domesticIndex = [self.days indexesOfObjectsPassingTest: ^(id obj, NSUInteger idx, BOOL *stop)
                              {
                                  if ([obj isDomestic])
                                      return YES; // found a match, keep going
                                  else
                                      return NO; // keep looking
                              } ];

        [domesticIndex enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL * _Nonnull stop) {
            [matches addObject:[self.days objectAtIndex:idx]];
        }];
        NSLog(@"\n\nDomestic indexes: %@\n\n", domesticIndex);
为了简单起见,这段代码从第一个索引集构造了第二个索引集,但它很容易适应于做任何您想做的事情

NSMutableIndexSet *s = [NSMutableIndexSet indexSetWithIndex:0];
[s addIndex:3];
[s addIndex:4];
[s addIndex:5];
[s addIndex:6];
[s addIndex:7];
[s addIndex:8];

NSMutableIndexSet *s2 = [[NSMutableIndexSet alloc] init];
[s enumerateRangesUsingBlock:^(NSRange range, BOOL *stop) {
  NSLog(@"%@", NSStringFromRange(range));

  [s2 addIndex:range.location];
  if (range.length > 1) {
    [s2 addIndex:range.location + range.length - 1];
  }
}];

NSLog(@"%@", s2);
最后的日志将打印3个索引:0、3、8