2016-12-12 1 views
0

Wir Aufzählungen für einige grundlegende Datenstrukturen wie diese verwenden:Swift Aufzählungen: Erste Enum-Wert für String enum von int Wert

enum Industry: String { 
    case Industry1 = "Industry 1", Industry2 = "Industry 2", Industry3 = "Industry 3" 

    static let allValues = [Industry1, Industry2, Industry3] 
} 

Wenn wir die Werte in unserer Datenbank speichern wir speichern sie als Ints/Zahlen. Zum Beispiel könnte der Wert für Industry 2 sein, was Industry2 wäre.

Wie mappe ich den Wert 2, zurück zum relevanten Element in der Enumeration? Also kann ich den String-Wert zurückholen?

Antwort

0

Basierend auf Ihrem Setup angezeigt werden soll könnten Sie tun:

let n = 2 
let stringValue = Industry.allValues[n - 1].rawValue 
+0

Sie sind korrekt, haben nicht an die Verwendung des allValues-Arrays gedacht, sondern machen den perfekten Sinn – StuartM

1

Die Industrie wird nicht in besserer Weise dargestellt. Sie sollten in einer besseren Struktur wie diese Industrie Namen und Code zusammen packen:

struct Industry { 
    var name: String 
    var code: Int 
} 

Jetzt könnten Sie eine Speicher-Klasse erstellen, die alle Branchen enthalten. Durch Enum Sie sind es nicht sehr gut darstellen. Zum Speichern einer Sache und zum Anzeigen anderer Dinge.

Nun, wenn Sie Sie speichern haben können industry.code

Und wenn Sie industry.name

+1

Warum 'T!'? Es ist einfach eine schlechte Übung, '' '' überall im Swift-Code zu platzieren. – user28434

3

Sie können dies tun, willkürlich haben Branchenbezeichnungen:

enum Industry: Int { 
    case Industry1 = 1, Industry2, Industry3 

    static let allValues = [Industry1, Industry2, Industry3] 

    func industryName() -> String { 
     switch self { 
     case .Industry1: return "Industry A" 
     case .Industry2: return "Industry B" 
     case .Industry3: return "Industry C" 
     } 
    } 
} 

Beispiel e der Verwendung:

let industry = Industry(rawValue: 2) 
industry?.industryName() // prints "Industry B" 
+0

Dies ist eine gute suggestive Möglichkeit, dies zu vervollständigen. Ich habe die Antwort akzeptiert, die mit dem aktuellen Setup funktioniert, und dies ist nicht zu unterschiedlich, möglicherweise ein besserer Layout-Ansatz +1 – StuartM