首页 > 解决方案 > Swift Dictionary 中一个键的多个值

问题描述

我想知道在 Swift 的字典中使用多个值类型的可能性是什么。

例如,如果我有一个名为猫的字典,则此字典有一个字符串“鲍勃”的键。现在我希望“Bob”有 2 个值,1 个布尔值和 1 个字符串。例如 True 和“红色”

var cat = [String: [Bool, String]]()

以上失败

“通用结构 'Dictionary' 要求 'String.Type' 符合 'Hashable'。

我试过

var cat = [Hashable: [Bool, String]]()

但这提供了错误

通用结构 'Dictionary' 要求 'Hashable.Protocol' 符合 'Hashable'

我想要例如:

var cat = ["Bob": [False, "Red"], "Albert": [True, "Black"]]

如果不是这样,这可能是一个好的解决方案吗?

编辑:

我使用结构解决了我的问题,但是使用元组的建议似乎也有助于我解决问题!

谢谢解决了:)

标签: swift

解决方案


您正在做的是滥用字典、类型或两者兼而有之。我建议你重新考虑你的整个方法。如果您要将名称与字符串和布尔值相关联,请创建一个自定义结构:

struct Person : Hashable {
    let name : String
    let favoriteColor : String
    let knowsSwift : Bool
}

现在您可以将它们存储在一个集合中并按名称提取一个,或者您可以制作一个按名称键入的人员字典,或其他任何内容。


推荐阅读