我正试图在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的位置(索引),并获得与上面相同的结果?
答案 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;
}];
由于您只检查对象的一部分,因此可能有多个对象与您的搜索匹配。如果你需要这些东西的数组,你可以通过数组进行自定义搜索,也可以根据你的搜索结果创建一个数组(只是永远不会返回你找到正确的结果,它会在你填写答案时继续搜索数组)。