繁体   English   中英

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

[英]Finding the location (index) of a NSRange in NSArray using ObjectAtIndex

我正在尝试在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的位置(索引),并获得与上述相同的结果?

  • 预先感谢,丹

您可以在数组上使用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;
  }];

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM