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];