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的新增功能: