无法解决从NSObject派生的类的哈希性

时间:2019-07-25 16:26:48

标签: swift hash

final class Foo: NSObject, NSFileProviderItem
{
    public func hash(into hasher: inout Hasher)
    {
        hasher.combine(itemIdentifier)
    }
}

产生迅速的编译器错误:

在其定义模块之外覆盖非开放实例方法

不支持扩展名中的声明

是否有解决NSObject哈希性的方法? 我在Sets中得到了Foo实例的副本,这恰好是 我要避免的事情。

1 个答案:

答案 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 ==的复制品