使用ObjectAtIndex在NSArray中查找NSRange的位置(索引)

时间:2014-07-30 14:55:25

标签: ios nsmutablearray nsarray nsrange

我正试图在NSArray中找到这个NSRange位置(索引):

NSValue *findRangeValue = [NSValue valueWithRange:NSMakeRange(146, 143)];

我可以使用方法 indexOfObject找到位置:

NSUInteger integer = [mutArray indexOfObject:findRangeValue];
//This returns (5) which is correct!

但是如何通过仅具有NSRange的长度(143)来找到我的NSArray中NSRange的位置(索引),并获得与上面相同的结果?

  • 先谢谢,Dan

1 个答案:

答案 0 :(得分:2)

您可以在阵列上使用indexOfObjectPassingTest:方法。

 int desiredRange = 152;
 NSUInteger integer = [objects indexOfObjectPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) {
      NSValue *range = (NSValue*)obj;
      if([range rangeValue].length == desiredRange)
      {
          *stop = true;
          return YES;
      }
      return NO;
  }];

由于您只检查对象的一部分,因此可能有多个对象与您的搜索匹配。如果你需要这些东西的数组,你可以通过数组进行自定义搜索,也可以根据你的搜索结果创建一个数组(只是永远不会返回你找到正确的结果,它会在你填写答案时继续搜索数组)。