好吧,假设我有一本字典:var someDict = [String: String]()
我可以添加一个键和定义:someDict["Smiling"] = ":)
但是假设我想给"Smiling"
添加另一个定义,比如:D
。someDict["Smiling"]? += ":D"
print(someDict)
["Smiling": ":):D"]
现在我想要的是
["Smiling": ":)", ":D"]
。我知道这是行不通的,因为分离器。所以我需要一种使用
,
的方法,我可以用["Smiling": [":)", ":D"]]
访问它,这等于someDict["Smiling"][1]
。我不会列出我曾经尝试过的东西,因为这些都是无用的,我不知道我在做什么。
总而言之,
我希望能够在字典中添加一个键,可能是在for循环中。
最佳答案
您需要的只是这种类型的数据格式:
var someDict = [String: [String]]()
初始化它:
someDict["Smiling"] = [":)"]
这样你就可以做到:
someDict["Smiling"]?.append(":D")
并称之为:
someDict["Smiling"]?[1] //returns ":D"
编辑:
可能值得一提的是,正如@dfri所说,使用显式数组索引调用(“[1]”)是不安全的,因为如果数组没有两个或更多的值,那么这将失败。一个“快速”的解决方案是通过检查无效索引是否在数组中来验证它。
这可能看起来像这样(感谢@Hamish提供的代码):
let idx = 1
if let arr = someDict["Smiling"], arr.indices.contains(idx) {
print(arr[idx]) // :D
}
关于swift - 为单个键添加多个定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41660198/