Objective c 如何通过值获取密钥?

Objective c 如何通过值获取密钥?,objective-c,ios,Objective C,Ios,可能重复: 如何通过值获取密钥 现在我通过键获取值,如下所示: NSString *valueStr = [dict objectForKey:@"Key2"]; 我需要按值获取密钥 for (NSString* key in [dictionary allKeys]) { NSString* value = [dictionary objectForKey:key] if(value equalsToString:@"SearchedValue") { search

可能重复:

如何通过值获取密钥

现在我通过键获取值,如下所示:

NSString *valueStr = [dict objectForKey:@"Key2"];
我需要按值获取密钥

for (NSString* key in [dictionary allKeys]) {
   NSString* value = [dictionary objectForKey:key]
   if(value equalsToString:@"SearchedValue") {
      searchedValue = value;
      keyForSearchedValue = key;
}
但这不是推荐的编码方式。相反,您应该按键搜索,而不是按值搜索。
请不要为同一主题创建3个新问题。

这是一个昂贵的操作,因为NSDictionary与任何地图收集类一样,设计用于按键保存值

您可以这样做,但前提是键和值都是NSString:


返回一个数组,该数组包含字典中具有给定值的所有键。

为什么需要这个,我能看到的唯一方法是遍历所有属性并检查值。但在我看来,这只是一个糟糕的设计,永远不应该被需要。你应该改变你的问题,我如何才能得到的价值键?
NSString *wantValue = @"tulips";
for (NSString *name in dict)
{
    NSString *value = [dict objectForKey:name];
    if ([value isEqualToString:wantValue])
    {
        NSLog(@"name '%@' matches", name);
    }
}
NSString *valueStr = ...;
NSArray *keys = [dict allKeysForObject:valueStr];