什么是Array.lastIndexOf的Objective-C等价物(element,fromIndex)

时间:2013-06-09 15:14:03

标签: objective-c nsstring nsarray lastindexof

我来自JavaScript / ActionScript背景,习惯于对字符串和数组执行indexOflastIndexOf。对于NSString,这两个都相对简单:

// equivalent of JavaScript's string.indexOf(substring, fromIndex)
[string rangeOfString:substring
              options:nil
                range:NSMakeRange(fromIndex, string.length - fromIndex)].location;

// equivalent of JavaScript's string.lastIndexOf(substring, fromIndex)
[string rangeOfString:substring 
              options:NSBackwardsSearch 
                range:NSMakeRange(string.length - fromIndex, fromIndex)].location;

对于NSArray,我设法找出了indexOf,但找不到要执行lastIndexOf的原生函数:

// equivalent of JavaScript's array.indexOf(item, fromIndex)
[array indexOfObject:item 
             inRange:NSMakeRange(fromIndex, array.count - fromIndex)];

在一个范围内的数组中找到lastIndexOf元素的代码是什么?是否需要多个选择器调用?

1 个答案:

答案 0 :(得分:2)

可以通过对-[NSArray indexOfObjectWithOptions:passingTest:]的单个方法调用完成,但需要传递一个块。

[array indexOfObjectWithOptions:NSEnumerationReverse passingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) {
    if (idx < fromIndex) *stop = YES;
    return [obj isEqual:item];
}];