类型枚举不符合协议 'CollectionType'

Type enum does not conform to protocol 'CollectionType'

我创建了这样的枚举:

enum AudioCodecsType: String {
    case MPEG4AAC = "MPEG-4 Audio", iLBC = "iLBC"

    static let names = [
        MPEG4AAC : "MPEG 4 Audio", iLBC : "iLBC"]
}

稍后我想从它的 names 字典中获取值:

var audioCodecs = AudioCodecsType.names.values as [String]

但我收到编译器错误:Type 'AudioCodecsType.Type' does not conform to protocol 'CollectionType'

如何从该字典中提取值?

字典的values 属性 returns 一个惰性集合,可以在循环中使用。如果想要传统数组,请使用其 array 属性:

var audioCodecs = AudioCodecsType.names.values.array

旁注:您可以将 names 属性 重新定义为:

static let names = [
    MPEG4AAC : MPEG4AAC.rawValue,
    iLBC : iLBC.rawValue
]

不易出现打字错误:)