final class Foo: NSObject, NSFileProviderItem
{
public func hash(into hasher: inout Hasher)
{
hasher.combine(itemIdentifier)
}
}
产生快速编译器错误:
重写其定义模块之外的非开放实例方法
不支持覆盖扩展中的声明
有没有办法修复 NSObject 的哈希性? 我在 Sets 中得到 Foo 实例的重复项,这正是 我想避免什么。
最佳答案
在这里找到修复:
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 == 的重复
关于swift - 无法修复从 NSObject 派生的类的哈希性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57206481/