我正在开发合同,我们有一条包含枚举的消息,但它只有一个可能的值。为了将来证明,我想确保使用枚举,以便可能添加的任何其他值不需要大量工作。所以我这样做了:
enum MyEnumeration: String {
case Case1 = "ValueFromContract"
}
当我正在阅读该消息时,我试图像这样初始化我的枚举:
let myEnum = MyEnumeration(rawValue: "ValueFromContract")
然后将 myEnum设置为值Some,这显然不是我想要的。我正在开发Xcode 6.1.1,这在Swift的更高版本中可能不是问题。
答案 0 :(得分:0)
如果枚举只有一个案例,显然你无法通过rawValue进行初始化。所以我必须这样做:
enum MyEnumeration: String {
case Case1 = "ValueFromContract"
case Unknown = "Unknown"
}
然后rawValue初始化程序工作正常:
let myEnum = MyEnumeration(rawValue: "ValueFromContract")
不确定它是否按设计,但很高兴知道...
答案 1 :(得分:0)
使用Xcode 6.1.1创建具有单个值的枚举没有任何困难:
enum MyEnumeration: String {
case Case1 = "ValueFromContract"
}
请注意MyEnumeration(rawValue: "ValueFromContract")
返回一个可选项,因为您传递的字符串可能不是该枚举的有效rawValue。您必须打开该可选项才能使用它。我在这里使用可选绑定:
if let myEnum = MyEnumeration(rawValue: "ValueFromContract") {
if myEnum == .Case1 {
println("\(myEnum.rawValue)") // This does print "ValueFromContract"
}
}
答案 2 :(得分:0)
要么你写
let myEnum = MyEnumeration(rawValue: "ValueFromContract")!
或
let myEnum: MyEnumeration = .Case1
无论如何,我只在一个只有一个值的枚举中看不到多少意义。