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

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

この方法の詳細については、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 に答える