Objective-c:找到NSArray中元素的最后一个索引

时间:2012-10-17 17:58:42

标签: objective-c find nsarray

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

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

我很难找到一个看APIS的简单解决方案,但是没有例子,所以我很难理解我应该使用哪种功能。

3 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:3)

NSArrayindexOfObjectWithOptions: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];
                                      }];

您可以在Documentation by Apple

中找到有关此方法的更多详细信息

答案 2 :(得分:0)

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

可以在这里找到并自由使用代码 -

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