我想知道我是否可以用x,y对作为我字典的 keys

let activeSquares = Dictionary <(x: Int, y: Int), SKShapeNode>()

但我得到了一个错误:

Cannot convert the expression's type '<<error type>>' to type '$T1'

错误是:

Type '(x: Int, y: Int)?' does not conform to protocol 'Hashable'

所以我们怎样才能让它符合?

推荐答案

Dictionary的定义是struct Dictionary<KeyType : Hashable, ValueType> : ...,即密钥的类型必须符合协议Hashable.但《语言指南》告诉我们,protocols can be adopted by classes, structs and enums,即不是元组.因此,元组不能用作Dictionary个键.

一种解决方法是定义一个包含两个int(或任何你想放在元组中的int)的可散列 struct 类型.

Swift相关问答推荐

SWIFT中MAP的静态方法包装器

如何设置两个不同的视图模型以在我的SwiftUI应用程序中使用相同的数据源?

在`NavigationStack`中使用`SafeAreaInset`修饰符时出现SwiftUI异常行为

如何在SWIFT任务中判断当前任务是否已取消(异步/等待)

在SWIFTUI&39;S视图修改器中使用等待关键字

Result类型的初始值设定项失败?

如何使用Duration.TimeFormatStyle以h m s格式快速格式化时间

为什么无法在 Swift 中使用AVFoundation扫描 QRCode

SwiftUI:列表背景为空列表时为黑色

从 actor 的 init 方法调用方法

在 struct 中的序列和非序列泛型函数之间进行 Select

无法使用 RealityKit 播放 USDZ 动画

闭包 - deinit self 对象的时间

数组使用偏移量对自身执行 XOR

Swift Swiftui - 将 colored颜色 保存到 UserDefaults 并从 @AppStorage 使用它

如何删除标签和步进按钮之间的间距是 SwiftUI Stepper?

如何使用 Date.ParseStrategy 在 Swift 5.6 中将字符串解析为日期?

使用自定义相机拍照 iOS 11.0 Swift 4. 更新错误

在 UItextfield 的右视图上添加一个按钮,文本不应与按钮重叠

如何在 Swift 中重写 setter