我知道使用Enum
从UInt
创建rawValue:
。但是,Swift可以使用UInt
向Enum
投放as
吗?这是WWDC 2016演讲Delivering an Exceptional Audio Experience的屏幕截图:
如您所见,代码从字典中检索数值并使用Enum
将其强制转换为as!
。
我的代码中没能做到这一点。 Swift有效吗?
答案 0 :(得分:1)
我一直在尝试使用相同的枚举和我自己的枚举来重现代码,并且在我看来,演员总是应该崩溃,例如:
let x: AVAudioSessionInterruptionType = .began
let dictionary: NSDictionary = [AVAudioSessionInterruptionTypeKey: x.rawValue as NSNumber]
// crash
let value = dictionary[AVAudioSessionInterruptionTypeKey] as! AVAudioSessionInterruptionType
我浏览了Swift进化列表,但我还没有找到可能导致这种情况发生变化的变化。说实话,并非WWDC中显示的所有代码片段都有效。