1

我有两个 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 回答