这是Swift 1.2,我正在使用Xcode 6.4。以下枚举有一个可用的初始化程序。
enum EstimateItemStatus: Int, Printable {
case Pending = 1
case OnHold = 2
case Done = 3
var description: String {
switch self {
case .Pending: return "Pending"
case .OnHold: return "On Hold"
case .Done: return "Done"
}
}
init?(id : Int) {
switch id {
case 1:
self = .Pending
case 2:
self = .OnHold
case 3:
self = .Done
default:
return nil
}
}
}
如果我传递一个ID并初始化一个实例,我得到的枚举值是正确的。但是hashValue
是错误的。例如,
let status = EstimateItemStatus(id: 2)!
println("\(status.hashValue) - \(status)")
我得到的输出是 1 - 暂停。
但它应该是2 - 暂停。
我在这里做错了什么?这是编译器错误还是我错过了什么?
答案 0 :(得分:2)
也许你混淆了hashValue
与rawValue
哈希值不会强制等于原始值