我正在尝试在Swift中为hashValue
使用String
函数。不幸的是,返回的值不一致,通常为负数。这是预期的行为吗?
如何在Swift中为字符串获取一致的Int值?
答案 0 :(得分:0)
Swift 4提供了一种新方法,您可以根据自己的需要获得哈希。只需订阅Hashable
协议并在您的课程中实现hash(into hasher: inout Hasher)
:
class CustomClass:Equatable, Hashable {
var id: Int32 = 0
var name: String?
init() {
}
static func == (lhs: CustomClass, rhs: CustomClass) -> Bool {
return lhs.hashValue == rhs.hashValue
}
// hash value is calculated based on id, name parameters
func hash(into hasher: inout Hasher) {
hasher.combine(id)
hasher.combine(name)
}
}