0

我来自 JavaScript/ActionScript 背景,习惯于处理字符串indexOflastIndexOf数组。对于NSStrings,这两个都比较简单:

// 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;

对于NSArrays,我设法弄清楚indexOf,但找不到要执行的本机函数lastIndexOf

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

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

4

1 回答 1

3

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

[array indexOfObjectWithOptions:NSEnumerationReverse passingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) {
    if (idx < fromIndex) *stop = YES;
    return [obj isEqual:item];
}];
于 2013-06-09T15:32:12.760 回答