Swift可以将一个UInt转换为枚举,使用" as&#34 ;?

时间:2016-07-06 04:31:10

标签: swift

我知道使用EnumUInt创建rawValue:。但是,Swift可以使用UIntEnum投放as吗?这是WWDC 2016演讲Delivering an Exceptional Audio Experience的屏幕截图:

WWDC sample code casting to Enum

如您所见,代码从字典中检索数值并使用Enum将其强制转换为as!

我的代码中没能做到这一点。 Swift有效吗?

1 个答案:

答案 0 :(得分:1)

我一直在尝试使用相同的枚举和我自己的枚举来重现代码,并且在我看来,演员总是应该崩溃,例如:

let x: AVAudioSessionInterruptionType = .began
let dictionary: NSDictionary = [AVAudioSessionInterruptionTypeKey: x.rawValue as NSNumber]

// crash
let value = dictionary[AVAudioSessionInterruptionTypeKey] as! AVAudioSessionInterruptionType

我浏览了Swift进化列表,但我还没有找到可能导致这种情况发生变化的变化。说实话,并非WWDC中显示的所有代码片段都有效。