我来自JavaScript / ActionScript背景,习惯于对字符串和数组执行indexOf
和lastIndexOf
。对于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
元素的代码是什么?是否需要多个选择器调用?
答案 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];
}];