4

我有一个 NSArray,我想找到一个元素的最后一次出现。例如:

[apple, oranges, pears, apple, bananas];
int i = lastIndexOf("apple");
out: i == 3;

我正在努力寻找一个简单的解决方案来查看 APIS,但没有示例,因此很难理解我应该使用哪个函数。

4

3 回答 3

8
NSUInteger index = [array indexOfObjectWithOptions:NSEnumerationReverse
    passingTest:^(id obj, NSUInteger i, BOOL *stop) {
        return [@"apples" isEqualToString:obj];
    }];

如果数组不包含@"apples"index则为NSNotFound

于 2012-10-17T18:13:16.047 回答
3

NSArrayhas indexOfObjectWithOptions:passingTest:,这将允许您反向搜索。

例如:

NSArray *myArr = @[@"apple", @"oranges", @"pears", @"apple", @"bananas"];
NSString *target = @"apple";

NSUInteger index = [myArr indexOfObjectWithOptions:NSEnumerationReverse
                                      passingTest:^BOOL(NSString *obj, NSUInteger idx, BOOL *stop) {
                                          return [target isEqualToString:obj];
                                      }];

您可以在Apple的文档中找到有关此方法的更多详细信息。

于 2012-10-17T18:01:41.320 回答
0

如果有人想要一个可重用的分类方法,我已经为 lastIndexOf 编写了一个。

可以从这里找到并免费使用代码 -

http://www.tejasshirodkar.com/blog/2013/06/nsarray-lastindexof-nsmutablearray-lastindexof/

于 2013-06-10T06:00:32.617 回答