首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从[Any]获取枚举原始值,而不向下转换

从[Any]获取枚举原始值,而不向下转换
EN

Stack Overflow用户
提问于 2017-07-19 16:06:05
回答 2查看 184关注 0票数 0

假设我有5个不同的字符串类型枚举,枚举1:字符串,枚举2:字符串...

我有一个数组Any,它的类型是5个枚举之一,有没有办法获得枚举数组的原始值而不将其转换为特定的枚举类型?

EN

回答 2

Stack Overflow用户

发布于 2017-07-19 17:15:42

您可以创建一个包含其他枚举值的新枚举类型,而不是将不同的枚举包装在一个包含Any的数组中。因此您始终是类型安全的,并且可以访问原始值。

代码语言:javascript
复制
enum Enum1: String {
    case foo1 = "foo"
    case foo2 = "foo2"
}

enum Enum2: String {
    case bla1 = "bla"
    case bla2 = "bla2"
}


enum EnumType {
    case enum1(Enum1)
    case enum2(Enum2)
    case enum3(Enum2)
}

let array: [EnumType] = [
    EnumType.enum1(.foo1),
    EnumType.enum1(.foo2),
    EnumType.enum2(.bla1)]

for item in array {
    switch item {
    case .enum1(let value):
        print(value)
    case .enum2(let value):
        print(value)
    case .enum3(let value):
        print(value)
    }
}
票数 1
EN

Stack Overflow用户

发布于 2017-07-19 16:09:54

可以,您可以这样做:

代码语言:javascript
复制
Enum(rawValue:INDEX)

举个例子,如果你有一个货币枚举:

代码语言:javascript
复制
public enum Currency : Int {

case EUR
case GBP
case SK
case NOK
case USD

public static let values : [Currency] = [EUR, GBP, SK, NOK, USD]

}

你可以像这样得到这个值:

代码语言:javascript
复制
Currency(rawValue: 0)

它将返回EUR。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45184509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档