[英]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.