Swift 通过rawValue仅使用一个事例初始化枚举

Swift 通过rawValue仅使用一个事例初始化枚举,swift,enums,Swift,Enums,我正在开发一个契约,我们有一个包含枚举的消息,但它只有一个可能的值。为了将来的证明,我想确保我使用了一个枚举,这样可能添加的任何附加值都不需要做很多工作。所以我这样做了: enum MyEnumeration: String { case Case1 = "ValueFromContract" } 当我阅读消息时,我尝试初始化枚举,如下所示: let myEnum = MyEnumeration(rawValue: "ValueFromContract") 然后将myEnum设置为值

我正在开发一个契约,我们有一个包含枚举的消息,但它只有一个可能的值。为了将来的证明,我想确保我使用了一个枚举,这样可能添加的任何附加值都不需要做很多工作。所以我这样做了:

enum MyEnumeration: String {
    case Case1 = "ValueFromContract"
}
当我阅读消息时,我尝试初始化枚举,如下所示:

let myEnum = MyEnumeration(rawValue: "ValueFromContract")

然后将myEnum设置为值Some,这显然不是我想要的。我正在开发Xcode 6.1.1,这在以后的Swift版本中可能不是问题。

显然,如果枚举只有一个大小写,则无法通过rawValue进行初始化。所以我必须这样做:

enum MyEnumeration: String {
    case Case1 = "ValueFromContract"
    case Unknown = "Unknown"
}
然后,rawValue初始值设定项工作正常:

let myEnum = MyEnumeration(rawValue: "ValueFromContract")

不确定它是否是设计的,但很高兴知道…

我在使用Xcode 6.1.1使用单个值创建枚举时没有任何困难:

enum MyEnumeration: String {
    case Case1 = "ValueFromContract"
}
请注意,MyEnumerationrawValue:ValueFromContract返回可选值,因为您传递的字符串可能不是该枚举的有效rawValue。要使用它,您必须打开该可选文件。这里我使用的是可选绑定:

if let myEnum = MyEnumeration(rawValue: "ValueFromContract") {
    if myEnum == .Case1 {
        println("\(myEnum.rawValue)")  // This does print "ValueFromContract"
    }
}
要么你写信

let myEnum = MyEnumeration(rawValue: "ValueFromContract")!


无论如何,我看不出只有一个值的枚举有多大意义。

奇怪的是,可能还有其他原因阻止它,但除非我有多个实例,否则它对我不起作用。
let myEnum: MyEnumeration = .Case1