2016-07-27 6 views
7

Mam enum:Swift, jak korzystać z wyliczenia, aby uzyskać wartość ciągu

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

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

Chcę użyć tego wyliczenia do wyświetlenia w celi zależą indexPath:

cell.textLabel.text = NewProgramDetails.ToMode 

błąd: Nie można przypisać wartości typu "ViewController.NewProgramDetails", aby wpisać "String?"

Jak używać wartości wyliczonych, aby przypisać je do etykiety tekstu jako łańcucha?

+3

Musisz uzyskać dostęp do jego RawValue. 'cell.textLabel.text = NewProgramDetails.ToMode.rawValue' –

+0

Btw Nie trzeba przypisywać temu samemu łańcuchowi znaków, jeśli jest identyczny z jego przypadkiem. –

+0

Zobacz też: http://stackoverflow.com/questions/24701075/swift-convert-enum-value-to-string –

Odpowiedz

9

Użyj rawValue z wyliczenia:

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

działa dla mnie dzięki –

6

Inny niż przy użyciu rawValue,

NewProgramDetails.ToMode.rawValue // "To Mode" 

można również nazwać String.init uzyskać wartość Enum za reprezentację ciąg:

String(NewProgramDetails.ToMode) 

To zwróci "ToMode", który może być al różni się nieco od przypisanego przez ciebie rawValue. Ale jeśli jesteś na tyle leniwy, aby nie przypisywać nieprzetworzonych wartości, możesz użyć tej metody!

8

w Swift 3, można użyć tego

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

Nie działa na żywo, najwyraźniej. Podobnie jak "avplayeritem.status". – Jonny