2012-11-15 134 views
-4

可能重复:
How i can fetch array in xcode?如何通过价值获得钥匙?

我怎样才能获得通过的关键价值?

现在我对密钥导入值,就像这样:

NSString *valueStr = [dict objectForKey:@"Key2"]; 

我需要通过价值的关键。

+5

为什么你会需要这个,我可以看到如何做到这一点的唯一方法是通过所有属性循环并检查值。但在我看来,这只是糟糕的设计,绝不应该需要。 – rckoenes

+1

你应该改变你的问题“我如何通过价值获得钥匙?” –

回答

4
for (NSString* key in [dictionary allKeys]) { 
    NSString* value = [dictionary objectForKey:key] 
    if(value equalsToString:@"SearchedValue") { 
     searchedValue = value; 
     keyForSearchedValue = key; 
} 

但是,这不是如何编码的推荐方式。相反,你应该按键搜索,而不是按价值搜索。 请不要为同一主题创建3个新问题。

+1

'@“键”'应该是'键'。 – trojanfoe

+0

对,变了。 – Dave

1

这是一个昂贵的操作,因为NSDictionary(像任何地图集合类)被设计为通过键保存值。

可以像这样做,但是,(假设两个键和值NSString):

NSString *wantValue = @"tulips"; 
for (NSString *name in dict) 
{ 
    NSString *value = [dict objectForKey:name]; 
    if ([value isEqualToString:wantValue]) 
    { 
     NSLog(@"name '%@' matches", name); 
    } 
} 
2
NSString *valueStr = ...; 
NSArray *keys = [dict allKeysForObject:valueStr]; 

返回包含具有在字典中的给定值的所有密钥的阵列。