Hash Swift 4.2错误:使用未实现的初始值设定项';init()';上课

Hash Swift 4.2错误:使用未实现的初始值设定项';init()';上课,hash,xcode10,swift4.2,Hash,Xcode10,Swift4.2,我有一门课是这样的: class SomeRequest: Hashable { let parameter: String init(parameter: String) { self.parameter = parameter } var hashValue: Int { return parameter.hashValue } } 然后我尝试按键将值设置为dictionary,其中键是SomeRequest: l

我有一门课是这样的:

class SomeRequest: Hashable {
    let parameter: String

    init(parameter: String) {
        self.parameter = parameter
    }

    var hashValue: Int {
        return parameter.hashValue
    }
}
然后我尝试按键将值设置为dictionary,其中键是SomeRequest:

let request = SomeRequest(parameter: "Some")
let dictionary: [SomeRequest: Any] = [:]
dictionary[request] = ...
在这一切之后,我得到了一个错误:“对类使用未实现的初始值设定项'init()'”


可能是什么问题?

Swift 4.2更改了协议哈希表。您可以看到新功能:

public func hash(into hasher: inout Hasher) 
崩溃的原因是,hash(into:)调用SomeRequest.init()。 你可以说:嘿,我不采用hash(into:)方法!但是斯威夫特在幕后做了

对于需要实现哈希(到:)的修复:


现在,您可以删除vashValue。它是通过哈希(转换为:)自动计算的。

Swift 4.2已更改协议可哈希。您可以看到新功能:

public func hash(into hasher: inout Hasher) 
崩溃的原因是,hash(into:)调用SomeRequest.init()。 你可以说:嘿,我不采用hash(into:)方法!但是斯威夫特在幕后做了

对于需要实现哈希(到:)的修复:


现在,您可以删除vashValue。它是通过hash(into:)自动计算出来的。

详细信息,您可以在此处了解Hashable的新增功能:

详细信息,您可以在此处了解Hashable的新增功能: