将一个枚举类型分配给另一个枚举类型
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】:
我想不出有效的用例,但您可能想使用它的rawValue
s:
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 前面的值”是什么意思?以上是关于将一个枚举类型分配给另一个枚举类型的主要内容,如果未能解决你的问题,请参考以下文章