final class Foo: NSObject, NSFileProviderItem
{
public func hash(into hasher: inout Hasher)
{
hasher.combine(itemIdentifier)
}
}
产生迅速的编译器错误:
在其定义模块之外覆盖非开放实例方法
不支持扩展名中的声明
是否有解决NSObject哈希性的方法? 我在Sets中得到了Foo实例的副本,这恰好是 我要避免的事情。
答案 0 :(得分:0)
在这里找到了解决方法:
https://forums.swift.org/t/xcode-10-gm-hash-into-issue-from-nsobject-class/16141/2
public override var hash: Int {
var hasher = Hasher()
hasher.combine(itemIdentifier)
return hasher.finalize()
}
这似乎是NSObject subclass in Swift: hash vs hashValue, isEqual vs ==的复制品