繁体   English   中英

在NSArray中访问NSDictionary

[英]Accessing NSDictionary inside NSArray

我有NSDictionaryNSArray 数组中的每个字典都有三个键:'Name','Sex'和'Age'

如何在NSDictionary NSArray中找到索引,例如Name = 'Roger'

在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];
    }];
}

优雅,不是吗?

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

如果你使用iOS> 3.0,你将能够使用for in构造。

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

有方法[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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM