此处是编码的新手。
我有一个字典,将字符串作为键,将整数数组作为值,并且我试图从给定键中获取该键的String。不是密钥的值,而是密钥本身。现在,我只需要在数组中放入一个额外的String并调用它,但是我的Xcode似乎有一个错误,即它实际上不喜欢使用混合类型数组并且不起作用。
一个例子看起来像这样:
var allDict: [String: [Int]] = [:];
allDict.updateValue([1, 2, 3], forKey: "BAGEL"]);
allDict.updateValue([4, 5, 6], forKey: "DONUT"]);
allDict.updateValue([7, 8, 9], forKey: "MACARON"]);
例如,我可以使用allDict["DONUT"]![1] //prints 5
来获得每个数组的值,但是我想要的是获取键的String。
即我想使用allDict [“ DONUT”]打印DONUT!
这可能吗?预先谢谢你!
答案 0 :(得分:0)
在此示例中,您似乎知道要输入密钥。
不过,您可以通过以下几种方式以有用的方式恢复密钥:
说你有一本字典
var dict: [String: Int] = ...
您可以获得键数组:
let keys = dict.keys // keys is of type [String]
您可以遍历键和值:
for (key, value) in dict {
...
}
当键发生冲突时,您可以合并的字典并从任一字典中选择值:
let mergedDict = dict.merge(otherDict) { leftValue, rightValue in
return leftValue
}
简要解决原始问题的版本:
假设您具有某个键的值:
let donutValue = dict["DONUT"]
以及其他地方,您将无法再访问该密钥,您希望以某种方式从该值中恢复它。最好的办法就是尝试通过使用具有的值在字典中搜索来找到密钥。
var searchResult = dict.first { key, value in
return value == donutValue
}
这假设字典中的值是相等的。否则,您必须编写一些函数或逻辑来确定您是否在对应于donutValue
的字典中找到了该值。