这是我的情景: 我有一个包含2个值的字典项数组。
array = (
{
id = 1;
title = "Salon One";
},
{
id = 2;
title = "Salon Two";
}
)
我甚至不确定这是否可行,但是我可以将此数组传递给函数并根据字典值返回对象索引吗?
- (int)getObjectIndex:(NSMutableArray *)array byName:(NSString *)theName{
int index;
/* Pseudo Code*/
/*index = the index value in 'array' of objectForKey:@"title" = theName*/
return index;
}
答案 0 :(得分:10)
如果你想用雪豹中引入的块超级想象,你可以这样做:
- (BOOL (^)(id obj, NSUInteger idx, BOOL *stop))blockTestingForTitle:(NSString*)theName {
return [[^(id obj, NSUInteger idx, BOOL *stop) {
if ([[obj objectForKey:@"title"] isEqualToString:theName]) {
*stop = YES;
return YES;
}
return NO;
} copy] autorelease];
}
然后每当你想在数组中找到字典的索引时:
[array indexOfObjectPassingTest:[self blockTestingForTitle:@"Salon One"]]
答案 1 :(得分:6)
为什么不呢?
- (NSInteger)getObjectIndex:(NSMutableArray *)array byName:(NSString *)theName {
NSInteger idx = 0;
for (NSDictionary* dict in array) {
if ([[dict objectForKey:@"title"] isEqualToString:theName])
return idx;
++idx;
}
return NSNotFound;
}
请注意签名略有不同(返回类型NSInteger
与int
)。在64位环境中使用NSNotFound时,这是必需的。
答案 2 :(得分:0)
当然有可能,只需循环遍历数组,直到找到你正在寻找的东西