我正在查看 Swift 编程语言,我遇到了一个问题,我无法区分它是否是 Lauguage 的问题(我使用的是 Xcode 6.1 版(6A1052c)):
enum Rank: Int {
case Ace = 1
case Two, Three, Four, Five
func simpleDescription() -> String {
switch self {
case .Ace: return "Ace"
default: return String(self.rawValue)
}
}
}
var rank: Rank?
rank = Rank(rawValue: 2)
println(rank.rawValue)
在最后一行,它抛出一个错误:'Rank?'没有名为
rawValue``
但是如果像var rank: Rank
这样声明变量,并将rank = Rank(rawValue: 2)
修改为rank = Rank(rawValue: 2 )!
,可以通过,没有报错。
最佳答案
从 rawValue 实例化一个枚举返回一个可选的枚举,Rank?
在你的例子中。为了访问可选枚举的属性,您必须将其解包,以获得 Rank
。
var rank: Rank?
rank = Rank(rawValue: 2)
if(rank != nil){
println(rank!.rawValue)
}
您还可以将 Rank 输入为 Rank
而不是 Rank?
var rank: Rank
rank = Rank(rawValue: 2)! //make sure you know this will always return a Rank. If it's nil your program will crash
println(rank.rawValue)
关于将变量声明为可选值时,Swift 枚举没有名为 'rawValue' 的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26451696/