web-dev-qa-db-ja.com

Swift enumを使用して文字列値を取得する方法

私は列挙型を持っています:

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

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

この列挙型を使用してセルに表示するには、indexPathに依存します。

cell.textLabel.text = NewProgramDetails.ToMode

エラー:タイプ 'ViewController.NewProgramDetails'の値をタイプ 'String?'に割り当てることはできません

Enum値を使用して、テキストを文字列としてラベル付けする方法を教えてください。

10

列挙型のrawValueを使用します。

cell.textLabel.text = NewProgramDetails.ToMode.rawValue
12
vadian

Swift 3では、これを使用できます

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

rawValueを使用する以外は、

NewProgramDetails.ToMode.rawValue // "To Mode"

String.initを呼び出して、列挙値の文字列表現を取得することもできます。

String(NewProgramDetails.ToMode)

これは"ToMode"を返します。これは、割り当てたrawValueとは少し異なる場合があります。ただし、生の値を割り当てないように怠惰な場合は、このString.initメソッドを使用できます。

7
Sweeper