ios - 类型枚举不符合协议(protocol) 'CollectionType'

标签 ios swift enums

我创建了这样的枚举:

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 属性返回一个惰性集合,可以在循环中使用。如果想要传统数组,请使用其 array 属性:

var audioCodecs = AudioCodecsType.names.values.array

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

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

不易出现输入错误 :)

关于ios - 类型枚举不符合协议(protocol) 'CollectionType',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28506405/

相关文章:

swift - 静态类函数: Instance member cannot be used on type

ios - SKEmitterNode的自定义类子类不起作用

Java 枚举在接口(interface)或类中的放置

ios - 滚动后 SwiftUI 列表单元格未正确显示选择状态

ios - 着色器在 iOS 上看起来很糟糕但在 Windows 上很好

ios - 为什么个人 VPN 配置不起作用?

python - PyQt5 && QML 导出枚举

ios - UIScrollView 作为 UICollectionViewCell 的 subview - 将点击传递给 super View

ios - 我可以将 WatchKit 扩展添加到通用应用程序中吗?

swift - 如果电池附件类型设置为 "checkmark"是否会自动选择它?