swift - 为单个键添加多个定义

标签 swift

好吧,假设我有一本字典:

var someDict = [String: String]()

我可以添加一个键和定义给它:

someDict["Smiling"] = ":)

但假设我想为 "Smiling" 添加另一个定义,例如 :D

someDict["微笑"]? += ":D"

print(someDict)
["Smiling": ":):D"]

现在我要的是

[“微笑”:“:)”,“:D”]。我知道这行不通,因为 , 分隔符。

所以我需要一种方法来使用 ["Smiling": [":)", ":D"]],这样我就可以通过 someDict["Smiling"][1],这将等于 :D

我不会列出我尝试过的,因为这些都是无用的,而且我不知道我在做什么。

总结一下,

我希望能够在字典中添加一个键,可能是在 for 循环中。

最佳答案

您只需要这种类型的数据格式:

var someDict = [String: [String]]()

初始化:

someDict["Smiling"] = [":)"]

这样你就可以这样做:

someDict["Smiling"]?.append(":D")

并称它为:

someDict["Smiling"]?[1] //returns ":D"

编辑:

可能值得一提的是,正如@dfri 所说,使用显式数组索引调用 ("[1]") 是不安全的,因为如果您的数组没有两个或更多值,这将失败。一种“Swifty”解决方案是通过检查无效索引是否在数组中来验证它。

这可能看起来像这样(感谢@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/

相关文章:

ios - UICollectionViewFlowLayout,UICollectionView : changing screen orientation breaks cells arrangement

ios - swift 2.0 : Reading HealthKit HeartRate Data - unexpectedly found nil while unwrapping an Optional

ios - 警告 : could not load any Objective-C class information in Swift realm

ios - 如何从 REST API search.list 结果中过滤掉 YouTube 的内容屏蔽视频

ios - swift UICollectionView : didSelectItemAtIndexPath not responding

ios - 左右两侧的 UIButton 边框

ios - 突出显示事件的分段控件 + 在事件段周围添加边框

swift - 无法将 MyClass 类型的值转换为 MyDelegate

javascript - 我如何通过 JavascriptCore 注入(inject)和使用这个 javascript 库 (web3)

Swift:将 IndexSet 转换为 [IndexPath]