2014-10-19 77 views
3

我正在尋找Swift編程語言,並且遇到了一個問題,我沒有區分它是否是Lauguage的問題(I 「M使用的Xcode 6.1版(6A1052c)):當聲明變量爲可選值時,Swift枚舉沒有名爲'rawValue'的成員

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?' does not have a member named rawValue``

但如果像聲明var rank: Rank可變,並修改rank = Rank(rawValue: 2)rank = Rank(rawValue: 2)!它可以通過並且不會出現錯誤。

回答

1

實例化來自rawValue的枚舉返回該枚舉的可選項Rank?。爲了訪問可選枚舉的屬性,你必須打開它,得到一個Rank

var rank: Rank? 
rank = Rank(rawValue: 2) 
if(rank != nil){ 
    println(rank!.rawValue) 
} 

您也可以讓排名鍵入作爲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)