Swift-类型'';不符合协议';可散列';
所以我有一个结构:Swift-类型'';不符合协议';可散列';,swift,Swift,所以我有一个结构: struct ListAction:Hashable{ 让标签:字符串 let action:(()->Void)?=nil let命令:命令?=nil } 但是我在声明类型'ListAction'不符合协议'Hashable'的行中得到了一个错误 如果我删除了定义action常量的行,我可以消除错误,但我不想永久删除该行 我使用的是Swift 5.1。通过覆盖散列(into:)并调用合并所有相关属性,为可散列提供您自己的实现 struct ListAction: Hash
struct ListAction:Hashable{
让标签:字符串
let action:(()->Void)?=nil
let命令:命令?=nil
}
但是我在声明类型'ListAction'不符合协议'Hashable'
的行中得到了一个错误
如果我删除了定义action
常量的行,我可以消除错误,但我不想永久删除该行
我使用的是Swift 5.1。通过覆盖
散列(into:)
并调用合并
所有相关属性,为可散列
提供您自己的实现
struct ListAction: Hashable {
static func == (lhs: ListAction, rhs: ListAction) -> Bool {
return lhs.label == rhs.label && lhs.command == rhs.command
}
func hash(into hasher: inout Hasher) {
hasher.combine(label)
hasher.combine(command)
}
let label: String
let action: (() -> Void)? = nil
let command: Command? = nil
}
这可能是因为您的操作不是Hashable类型。有关更多信息,请参阅此链接@比克拉姆是的,看起来这就是问题所在。我该如何使其可散列呢?你可以检查一下:@LukeChambers在上面的链接中有一个例子