迅速从AnyHashable转换为枚举

时间:2018-06-19 09:15:32

标签: swift enums casting optional unwrap

我有这个游乐场:

import Foundation

enum WeekDay: Int {
    case mon, tues, wed, thurs, fri, sat, sun
}

let wd = WeekDay(rawValue: 0)! // mon

let param = [wd: [1, 2, 3]]
message(dict: param)

func message(dict: [AnyHashable: [Int]?]) {
    for (k, v) in dict {
        print(k, type(of: k), v) // mon AnyHashable Optional([1, 2, 3])

        if let k = k as? WeekDay {
            print("got it: \(k)")
        }
    }
}

但我永远无法打印got it: ...

为什么我无法从AnyHashable投射到WeekDay

我想在函数AnyHashable中使用message的原因是dict的关键字可以是IntWeekDay。如果我不使用AnyHashable,我应该将哪种类型用于我的目的?

由于

1 个答案:

答案 0 :(得分:6)

您应该使用base的{​​{1}}值转换回其原始类型,如下所示

AnyHashable