swift - 无法修复从 NSObject 派生的类的哈希性

标签 swift hash

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/

相关文章:

ios - 表达式中的 NSExpression 自定义变量

iphone - TableView 在 Swift 中推送到详细 View

ios - 如何在应用程序委托(delegate)中更改应用程序语言?

javascript - 为什么这个使用散列搜索字符串的函数不起作用?

ios - 使用 iOS SDK 在 facebook 上分享视频

swift - xcode 8 测试版 3 : Expected ',' joining parts of a multi-clause condition

hash - Protobuf的GetHashCode到处都一样吗?

r - 在R环境中,如何遍历哈希项?

encryption - 短(6 位)加密 key 散列

ruby - 国家代码和拨号代码 ruby