我有NSArray
NSDictionary
。
数组中的每个字典都有三个键:“名称”,“性别”和“年龄”
如何在NSArray
的{{1}}中找到索引,例如NSDictionary
?
答案 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