swift - 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"]]
如果不是这样,这可能是一个好的解决方案吗?
编辑:
我使用结构解决了我的问题,但是使用元组的建议似乎也有助于我解决问题!
谢谢解决了:)
解决方案
您正在做的是滥用字典、类型或两者兼而有之。我建议你重新考虑你的整个方法。如果您要将名称与字符串和布尔值相关联,请创建一个自定义结构:
struct Person : Hashable {
let name : String
let favoriteColor : String
let knowsSwift : Bool
}
现在您可以将它们存储在一个集合中并按名称提取一个,或者您可以制作一个按名称键入的人员字典,或其他任何内容。
推荐阅读
- html - CSS - 如何创建下拉菜单
- python - 仅使用 `Pipfile.lock` 指定 Python 版本
- jquery - 使用 jQuery 和 Angular 对数据进行排序
- python - pyscopg2,我应该分块提交吗?
- android - 向 Firebase 中的令牌组发送消息
- excel - 用户在范围中输入值 - 范围内的其余单元格发生变化,使得范围总和仍等于预设数(Sudoku Lite)
- python - 在正则表达式中选择标题行下方的一组行
- html - 垂直输入类型“范围”的最大值和最小值的位置标签
- ruby - 为什么 Ruby Kirbybase 不适用于 if 语句?
- ms-access - 在多个字段上访问 VBA 关键字搜索功能