-4

可能重复:
我如何在 xcode 中获取数组?

如何通过值获取密钥?

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

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

我需要按值获取密钥。

4

3 回答 3

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

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

于 2012-11-15T13:11:42.017 回答
2
NSString *valueStr = ...;
NSArray *keys = [dict allKeysForObject:valueStr];

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

于 2012-11-15T13:30:25.790 回答
1

这是一项昂贵的操作,因为NSDictionary(与任何地图集合类一样)旨在通过键保存值。

但是,您可以这样做(假设 key 和 value 都是NSString):

NSString *wantValue = @"tulips";
for (NSString *name in dict)
{
    NSString *value = [dict objectForKey:name];
    if ([value isEqualToString:wantValue])
    {
        NSLog(@"name '%@' matches", name);
    }
}
于 2012-11-15T13:13:46.420 回答