我爲了設置從JSON字符串enum
類型,像這種映射NSString
對象NSNumber
對象在NSDictionary
:如何有效地得到NSDictionary中鍵值的反向映射?
typedef enum
{
XXEnumTypeA,
XXEnumTypeB,
XXEnumTypeC,
} XXEnumType;
...
@property (nonatomic, assign) XXEnumType enumType;
...
self.mapNSStringToEnumType =
@{
@"enumTypeA" : @(XXEnumTypeA),
@"enumTypeB" : @(XXEnumTypeB),
@"enumTypeC" : @(XXEnumTypeC),
};
...
self.enumType = [self.mapNSStringToEnumType[stringFromJSON] integerValue];
現在我想要去的其他方式,向enum
值轉換成字符串。我不想用反向映射存儲另一個字典,我使用的解決方案是通過映射字典進行線性搜索以查找值,然後返回鍵。
在實踐中,我的線性方法很好,性能和記憶都不是問題,但我從學術的角度好奇,如果有另一種更有效的方式我不知道或可能是一種不同的類型兩種方式保持映射的結構(確保所有值都是唯一的)?
爲什麼你不想存儲另一個字典? – Wain
如果映射是1:1(相互等價),那麼'[dict allKeysForObject:val] [0]'效果很好。 – 2013-08-06 22:38:32
@ H2CO3謝謝,這就是我正在使用:) – jhabbott