2016-07-27 7 views
7

Ich habe Enum:Swift wie ENUM verwenden String-Wert zu erhalten

enum NewProgramDetails: String { 
    case Description = "Description", ToMode = "To Mode", From = "From", To = "To", Days = "Days" 

    static let allValues = [Description, ToMode, From, To, Days] 
} 

Ich möchte diese Enumeration verwenden in meiner Zelle hängen von indexPath anzuzeigen:

cell.textLabel.text = NewProgramDetails.ToMode 

Fehler: kann nicht Wert zuweisen vom Typ 'ViewController.NewProgramDetails', um 'String?'

Wie kann ich Enumerationswerte verwenden, um es Label-Text als Zeichenfolge zuzuweisen?

+3

Sie müssen ihre rawValue zugreifen. 'cell.textLabel.text = NewProgramDetails.ToMode.rawValue' –

+0

Btw Es ist nicht notwendig, demselben String denselben String zuzuweisen, wenn er mit dem Case identisch ist. –

+0

Siehe auch: http://stackoverflow.com/questions/24701075/swift-convert-enum-value-to-string –

Antwort

9

Verwenden Sie die rawValue der Enumeration:

cell.textLabel.text = NewProgramDetails.ToMode.rawValue 
+0

funktioniert für mich danke –

6

Anders als rawValue Verwendung

NewProgramDetails.ToMode.rawValue // "To Mode" 

Sie auch String.init nennen kann die ENUM-Wert des String-Darstellung zu erhalten:

String(NewProgramDetails.ToMode) 

Dies wird "ToMode" zurückgeben, die al sein kann etwas anders als die rawValue, die Sie zugewiesen haben. Aber wenn Sie faul genug sind, keine Rohwerte zuzuweisen, kann diese Methode String.init verwendet werden!

8

In swift 3 können Sie diese verwenden

var enumValue = Customer.Physics 
var str = String(describing: enumValue) 
+0

Funktioniert nicht für Live-Werte, anscheinend. Wie 'avplayeritem.status'. – Jonny

Verwandte Themen