我有一个字典定义为:
let drinks = [String:[String]]()
drinks = ["Soft Drinks": ["Cocoa-Cola", "Mountain Dew", "Sprite"],
"Juice" :["Orange", "Apple", "Grape"]]
Run Code Online (Sandbox Code Playgroud)
如何获取给定值的密钥.
let key = (drinks as NSDictionary).allKeysForObject("Orange") as! String
print(key)
//Returns an empty Array. Should return "Juice"
Run Code Online (Sandbox Code Playgroud)
abi*_*tom 15
func findKeyForValue(value: String, dictionary: [String: [String]]) ->String?
{
for (key, array) in dictionary
{
if (array.contains(value))
{
return key
}
}
return nil
}
Run Code Online (Sandbox Code Playgroud)
调用上面的函数,它将返回一个可选的String?
let drinks = ["Soft Drinks": ["Cocoa-Cola", "Mountain Dew", "Sprite"],
"Juice" :["Orange", "Apple", "Grape"]]
print(self.findKeyForValue("Orange", dictionary: drinks))
Run Code Online (Sandbox Code Playgroud)
此函数将仅返回已传递值的数组的第一个键.
在Swift 2.0中,您可以过滤字典,然后将结果映射到数组.
let keys = drinks.filter {
return $0.1.contains("Orange")
}.map {
return $0.0
}
Run Code Online (Sandbox Code Playgroud)
结果将是String表示匹配键的对象数组.