2016-07-27 9 views
0

Ich arbeite mit einigen grundlegenden Swift-Operationen. Mit einem Schieberegler möchte ich ein entsprechendes Etikett diktieren. Da der Schieberegler eine int verwendet, um die Position darzustellen, würde ich eine Enum zum Konvertieren verwenden.Verwenden eines Int als ein Fall in einem Enum

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

Und ich möchte es so nennen:

variable = Temperature.0 

Jede Hilfe wäre ideal. Bitte lass mich deine Gedanken wissen.

Danke!

+0

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

+0

Ich glaube nicht, dass es möglich ist. Es ist von Entwurf. Ein Fall in enum in swift muss einen Namen (String) haben, aber nicht Int. –

Antwort

1

Rohwerte eines Enums werden auf der rechten Seite des = gesetzt. In Ihrem Enum Temperature, der Rohwert Typ ist Int, so sollten Sie es wahrscheinlich tun auf diese Weise:

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

ich nicht die rohen Werte für die anderen Fälle schreiben, weil sie geschlossen werden kann.

Jetzt können Sie einen Fall wie dieser Zugang:

Temperature.One 

„Aber ich will es Ganzzahlliterale mit Zugang zu haben!“ Du weintest.

Leider ist dies in Swift unmöglich. Das nächste, was man bekommen kann, ist dies:

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

Und Sie können Ihre Enum mit der initializer initialisieren:

Temperature(rawValue: 1) 
1

Sie entweder ein Array verwenden können:

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

let one = temeratures[1] 

Oder ein Tupel:

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

let one = temperatures.1 

Während Sie nicht Laufzeitwerte (non-Literale) in der zweiten

0

Verwendung Tupel verwenden können, Enum ist nicht für diesen Zweck.

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

beste Option, die ich würde sagen, dass Sie ein Wörterbuch verwenden:

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

Dann können Sie es mit dem Schieberegler Wert zugreifen. Beachten Sie, wenn Sie auf Werte zugreifen, die nicht im Wörterbuch enthalten sind -> Auf Null prüfen.