[英]Accessing NSDictionary inside NSArray
我有NSDictionary
的NSArray
。 数组中的每个字典都有三个键:'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.