2016-07-27 59 views
0

我正在使用一些基本的Swift操作。使用滑塊,我想指定一個相應的標籤。由於滑塊使用int來表示位置,因此我將使用枚舉進行轉換。在枚舉中使用int作爲一個例子

enum Temperature: Int { 
    case 0 = "Zero" 
    case 1 = "One" 
    case 2 = "Two" 
    case 3 = "Three" 
} 

而且我想這樣稱呼它:

variable = Temperature.0 

任何幫助將是理想的。請讓我知道你的想法。

謝謝!

+0

Document here: - http://stackoverflow.com/documentation/swift/224/enums#t=201607271236068847981 –

+0

我不認爲這是可能的。這是設計。在swift中枚舉的情況下必須有一個名稱(String),但不是Int。 –

回答

1

枚舉的原始值放在=的右側。在你的枚舉Temperature,原始值類型是Int,所以你應該這樣來做:

enum Temperature: Int { 
    case Zero = 0, One, Two, Three 
} 

我沒有寫的原始值的其他情況,因爲他們可以推斷。

現在您可以訪問的情況是這樣的:

Temperature.One 

「但我想用整數常量來訪問它!」你哭了。

不幸的是,這在Swift中是不可能的。你可以得到的最接近的事是這樣的:

enum Temperature: Int { 
    case _0 = 0, _1, _2, _3 
} 

,並且可以使用初始化初始化枚舉:

Temperature(rawValue: 1) 
1

您可以使用數組:

let temperatures = ["Zero", "One", "Two", "Three"] 

let one = temeratures[1] 

或者元組:

let temperatures = ("Zero", "One", "Two", "Three") 

let one = temperatures.1 

雖然後者不能使用運行時值(非文字)

0

使用元組,enum不是用於此目的。

let temperature = ("Zero", "One", "Two", "Three") 
let zero = temperature.0 
0

最好的選擇,我會說你使用的字典:

let Temperatures:[Int: String] = [0: "zero", 1:"one"] 

然後,您可以用滑塊值訪問它。請注意訪問不在字典中的值時 - >檢查是否爲零。