充满NSDictionaries的NSArray。如何找到对象的索引?

9

我有一个array,里面装着许多NSDictionaries。我想要找到其中一个字典的索引,但是我所知道的只有它某个键@"name"对应的value

怎么做才能实现呢?

2个回答

40
theArray中查找第一个@"name"的值为theValue的字典,并返回其索引:
NSUInteger index = [theArray indexOfObjectPassingTest:
        ^BOOL(NSDictionary *dict, NSUInteger idx, BOOL *stop)
        {
            return [[dict objectForKey:@"name"] isEqual:theValue];
        }
];

index将会是NSNotFound,如果没有找到匹配的对象。


我猜NSPredicate是要使用的东西。 - JOA80
@Ashishail:谓词用于过滤数组,即返回一个符合条件的新数组。如果只需要第一个匹配项的索引,则认为indexOfObjectPassingTest更有效。 - Martin R
2
@SmartTree:2147483647 = 0x7FFFFFFF 是 NSNotFound - Martin R
2
@Rambatino:这种方法确实会在找到匹配项后立即停止迭代。如果块将stop参数设置为NO以提前停止迭代,则该方法将返回NSNotFound。例如,如果在前1000个元素中未找到匹配项,则可以停止迭代。- 这回答了你的问题吗? - Martin R
2
完美。感谢您提供简洁优雅的解决方案! - Terrance Shaw
显示剩余2条评论

1
 NSArray *temp = [allList valueForKey:@"Name"];
 NSInteger indexValue = [temp indexOfObject:YourText];
 NSString *name = [[allList objectAtIndex:indexValue] valueForKey:@"Name"]  

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接