objective-c中的双向字典

时间:2018-02-16 06:27:27

标签: objective-c swift nsdictionary

假设我有一对一映射的键值对。 对于每个键我都有独特的价值。 然后,我可以制作一个双向字典或类似的字典,它可以从键给我价值,反之亦然吗?

P.S。 - 我知道我可以使用[NSDictionary allKeysForObject: (nonnull id)]返回NSArray具有该值的所有密钥。

我只是想知道是否有类似双向字典的东西,那么它会很有用。

如果有类似的话,请为swift提供解决方案。

感谢。

2 个答案:

答案 0 :(得分:0)

如果每个Key都有唯一(!!!)值,您可以使用

将类别添加到NSDictionary
-(NSString*)keyForValue:(id)value{
    NSArray* allKeys = [self allKeysForObject:value];
    return [allKeys count] > 0 ? [allKeys objectAtIndex:0] : nil;
}

答案 1 :(得分:0)

您可以Dictionary将其Value约束为Equatable并提供您自己的subscript以返回值的第一个键:

extension Dictionary where Value: Equatable {
    subscript(firstKeyFor value: Value) -> Key?  {
        return first(where: { $0.value == value })?.key
    }
}
let dict = ["One": 1, "Two": 2, "Three": 3]
if let key =  dict[firstKeyFor: 1] {
    print(key)   // "One"
}