Swift

2016-07-27 26 views
7

Ben enum:Swift

ben hücremde görüntülemek için bu enum kullanmak istiyorum
enum NewProgramDetails: String { 
    case Description = "Description", ToMode = "To Mode", From = "From", To = "To", Days = "Days" 

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

indexPath bağlıdır:

cell.textLabel.text = NewProgramDetails.ToMode 

hatası: değerini atanamıyor 'ViewController.NewProgramDetails' yazın 'String?'

Enum değerlerini etiket metnine bir dize olarak atamak için nasıl kullanabilirim?

+3

Bunu rawValue erişmesi gereken kullanabilirsiniz. 'cell.textLabel.text = NewProgramDetails.ToMode.rawValue' –

+0

Btw Dava için aynıysa, aynı String'i ona atamaya gerek yoktur. –

+0

Ayrıca bakınız: http://stackoverflow.com/questions/24701075/swift-convert-enum-value-to-string –

cevap

9

Kullanım enum rawValue:

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

benim için çalışıyor teşekkürler –

6

Diğer

NewProgramDetails.ToMode.rawValue // "To Mode" 

ayrıca enum değerin dize temsilini almak için String.init çağırabilirsiniz:

String(NewProgramDetails.ToMode) 

Bu, "ToMode"'u döndürecektir. adanmış olduğunuz rawValue'dan biraz farklıdır. Ancak ham değerleri atamayacak kadar tembelseniz, bu String.init yöntemi kullanılabilir!

8

hızlı 3'te, bu

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

Görünüşe göre, canlı değerler için çalışmıyor. Avplayeritem.status gibi. – Jonny