我知道从UInt
使用rawValue:
创建Enum
。然而,Swift可以使用as
将UInt
投射到Enum
?下面是来自WWDC 2016的谈话Delivering an Exceptional Audio Experience截图:Swift可以将一个UInt投射到一个带有“as”的枚举?
正如你看到的,代码从词典中检索数字值,并使用as!
它转换成Enum
。
我还没有能够在我的代码中做到这一点。它是否有效Swift?
我知道从UInt
使用rawValue:
创建Enum
。然而,Swift可以使用as
将UInt
投射到Enum
?下面是来自WWDC 2016的谈话Delivering an Exceptional Audio Experience截图:Swift可以将一个UInt投射到一个带有“as”的枚举?
正如你看到的,代码从词典中检索数字值,并使用as!
它转换成Enum
。
我还没有能够在我的代码中做到这一点。它是否有效Swift?
我一直在试图复制该代码使用相同的枚举和我自己的枚举和演员总是崩溃,因为它应该,在我看来,如:
let x: AVAudioSessionInterruptionType = .began
let dictionary: NSDictionary = [AVAudioSessionInterruptionTypeKey: x.rawValue as NSNumber]
// crash
let value = dictionary[AVAudioSessionInterruptionTypeKey] as! AVAudioSessionInterruptionType
我在斯威夫特进化列表去而且我还没有找到可能导致这种情况发生的变化。说实话,并不是WWDC中显示的所有代码片段都在工作。
它是有效的Swift。我曾多次使用过它,主要是它建议这样做,但不记得确切的例子。 –
我无法使它在我的Xcode 8版本中工作,并且我尝试了直接投射,通过'AnyObject'进行投射以及通过'NSNumber'投射。 – Sulthan