假设我有一对一映射的键值对。 对于每个键我都有独特的价值。 然后,我可以制作一个双向字典或类似的字典,它可以从键给我价值,反之亦然吗?
P.S。 - 我知道我可以使用[NSDictionary allKeysForObject: (nonnull id)]
返回NSArray
具有该值的所有密钥。
我只是想知道是否有类似双向字典的东西,那么它会很有用。
如果有类似的话,请为swift提供解决方案。
感谢。
答案 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"
}