1

2 つの NSArray 変数があり、それぞれが内部で同様の NSDictionary を取得します。

特定の行 (indexPath.row) について:

 NSArray* array1 = ...;
 NSDictionary* item = [array1 objectAtIndex:indexPath.row];
 int myid = [[item valueForKey:@"id"] intValue];
 // id = 5

ここで、array2 で id = 5 の要素を見つける必要がありますが、私は ac# 開発者なので、それを行うために for を使用するのは少し奇妙だと思います。

for に代わるものはありますか?

4

1 に答える 1

8

NSArray使用できるメソッドindexOfObjectPassingTestがあります:

NSArray *array2 = ...;
int searchId = ...;
NSUInteger index2 = [array2 indexOfObjectPassingTest:^BOOL(NSDictionary *item, NSUInteger idx, BOOL *stop) {
    BOOL found = [[item objectForKey:@"id"] intValue] == searchId;
    return found;
}];

if (index2 != NSNotFound) {
    // First matching item at index2.
} else {
    // No matching item found.
}

これは、最初に一致したインデックスを返します。一致するすべてのインデックスが必要な場合は、 を使用しますindexesOfObjectsPassingTest

于 2012-10-17T17:36:31.493 に答える