将一个枚举类型分配给另一个枚举类型

Posted

技术标签:

【中文标题】将一个枚举类型分配给另一个枚举类型【英文标题】:Assign one enum Type to another enum Type 【发布时间】:2016-11-08 14:58:55 【问题描述】:

我们如何将一种枚举类型的变量类型转换为另一种。我有两个 Int 枚举。当我创建一个 First 枚举类型的变量并从 second 分配一些值时,它不允许我这样做。我们如何才能做到这一点?

下面是代码

enum Sections: Int 
    case initiateZero = 0
    case Air
    case Weight


enum SubSections: Int 
    case MaxPath = 0
    case Weight
    case FullWeight

为了得到它们。

var section = Sections.initiateZero

if isLongForm 
    section = Sections(rawValue: indexPath.section)!
 else 
    section = SubSections(rawValue: indexPath.section)

无法分配它们。请提出建议。

【问题讨论】:

请显示两个枚举的代码。如果两个枚举都使用相同的原始类型,你可以这样做,但实际上你不应该这样做 @alexburtnik 你能看一下代码吗 你为什么要将SubSection 值设置为类型为Section 的变量?在if-else 之后你将如何使用section 变量? mby 您需要将变量类型标签添加为 Any,因为默认情况下 section 的类型是 Sections 或者您应该为两个枚举创建一个协议。 如果我将此 var 声明为 AnyObject 它不允许我在那里进行类型转换。我发现检查它们的唯一方法是声明至少一个枚举类型 var。 【参考方案1】:

我想不出有效的用例,但您可能想使用它的rawValues:

enum Enum1: Int 
    case one = 0
    case two = 1


enum Enum2: Int 
    case one = 0
    case two = 1


let enum1 = Enum1.one
let enum2 = Enum2(rawValue: enum1.rawValue)

print(enum2)

打印:

Optional(Enum2.one)

【讨论】:

请查看 rawvalue 前面的值我需要通过 indexpath.section 我需要在这样做之前更改该内容 “rawvalue 前面的值”是什么意思?

以上是关于将一个枚举类型分配给另一个枚举类型的主要内容,如果未能解决你的问题,请参考以下文章

无法将字符串枚举类型脚本定义为字符串不可分配

类型'string'不可分配给类型枚举错误

枚举类型

c#下可否将一个枚举类型的数组转换为一个整型数组

Swift 学习- 09 -- 枚举

在 GCC 中使用不同枚举类型分配或执行算术时如何发出警告?