在NSArray中访问NSDictionary

时间:2011-02-27 18:16:19

标签: iphone objective-c nsarray nsdictionary

我有NSArray NSDictionary。 数组中的每个字典都有三个键:“名称”,“性别”和“年龄”

如何在NSArray的{​​{1}}中找到索引,例如NSDictionary

4 个答案:

答案 0 :(得分:15)

在iOS 4.0及更高版本中,您可以执行以下操作:

- (NSUInteger) indexOfObjectWithName: (NSString*) name inArray: (NSArray*) array
{
    return [array indexOfObjectPassingTest:
        ^BOOL(id dictionary, NSUInteger idx, BOOL *stop) {
            return [[dictionary objectForKey: @"Name"] isEqualToString: name];
    }];
}

优雅,没有?

答案 1 :(得分:6)

    NSUInteger count = [array count];
    for (NSUInteger index = 0; index < count; index++)
    {  
        if ([[[array objectAtIndex: index] objectForKey: @"Name"] isEqualToString: @"Roger"])
        {  
            return index;
        }   
    }
    return NSNotFound;

答案 2 :(得分:-1)

如果您使用的是iOS&gt; 3.0您将能够使用for in构造。

for(NSDictionary *dict in myArray) {
  if([[dict objectForKey:@"Name"] isEqualToString:@"Roger"]) {
    return [myArray indexForObject:dict];
  }
}

答案 3 :(得分:-2)

有方法[NSArray indexOfObjectPassingTest]。但是它采用了块,这是C的Apple扩展,因此是邪恶的。相反,这样做:

NSArray *a; //Comes from somewhere...
int i;
for(i=0;i<a.count;i++)
    if([[[a objectAtIndex:i] objectForKey: @"Name"] compare: @"Roger"] == 0)
        return i; //That's the index you're looking for
return -1; //Not found