【发布时间】:2017-09-26 22:37:11
【问题描述】:
这是一个 AnyHashable 不支持枚举类型转换的简单案例。
enum testEnum: String {
case Test
}
let myObject: AnyHashable = testEnum.Test as AnyHashable
let newObject = myObject as? testEnum
在这种情况下,newObject 将返回 nil。如果我改为这样做
let newObject = (myObject as? AnyObject) as? testEnum
它会很好地投射。
我已经尝试过使用结构、自定义类和字符串,它们都正确转换。例如这行得通。
let myObject: AnyHashable = "Test" as AnyHashable
let newObject = myObject as? String
这是 swift 中的错误还是我在这里没有正确执行此操作。
我在 Swift 3.2 和 Swift 4 中尝试过这个。
【问题讨论】:
-
您应该使用
Any而不是AnyHashable。顺便说一句,以大写字母开头的枚举命名和以小写字母开头的案例是 Swift 约定