初始化的枚举返回错误的hashValue

时间:2015-10-28 09:30:10

标签: ios swift enums

这是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 - 暂停。

我在这里做错了什么?这是编译器错误还是我错过了什么?

Demo playground

1 个答案:

答案 0 :(得分:2)

也许你混淆了hashValuerawValue 哈希值不会强制等于原始值