Ich habe eine Situation, in der ich binäre Decodierung von einigen Daten versuchen und die Datentypen haben sowohl einen numerischen Wert und einen String-Wert und einen Namen. Ich dachte, der Verwendung eines ENUM wie:Swift Enum sowohl eine Zeichenfolge und eine Int
enum TARGET_TRACK_TYPE : String {
case TT_INVALID = "Invalid"
case TT_TRUE_TRACK_ANGLE = "True Track Angle"
case TT_MAGNETIC = "Magnetic"
case TT_TRUE = "True"
}
aber ich weiß auch, dass:
TT_INVALID = 0
und TT_TRUE_TRACK_ANGLE = 1
usw. Gibt es eine einfache Möglichkeit, diese beiden „Dinge“ die Zeichenfolge und die numerische einzukapseln Wert in ein Enum-Konstrukt oder muss ich eine Art von Struktur/Klasse machen, um damit umzugehen?
Ich glaube, ich möchte so etwas wie
let a = TARGET_TRACK_TYPE.rawValue(value: 2)
println(a)
die wiederum True Track Angle
drucken würde tun, das weiß ich kann mit einer Struktur oder einer Klasse durchgeführt werden, aber ich m speziell interessiert an der enum
Oder für ein anderes Beispiel:
/// Emitter Category is defined in section 3.5.1.10 of the GDL90 Spec
struct EmitterCategory {
let category : Int
func getString() -> String {
switch(category) {
case 0:
return "No aircraft type information";
case 1:
return "Light";
case 2:
return "Smalle";
case 3:
return "Large";
case 4:
return "High Vortex Large";
case 5:
return "Heavy";
case 6:
return "Highly Manuverable";
case 7:
return "Rotorcraft";
case 8:
return "(Unassigned)";
case 9:
return "Glider/sailplane";
case 10:
return "Ligther than air";
case 11:
return "Parachutist/sky diver";
case 12:
return "Ultra light/hang glider/paraglider";
case 13:
return "(Unassigned)";
case 14:
return "Unmanned aerial vehicle";
case 15:
return "Space/transatmospheric vehicle";
case 16:
return "(Unassigned)";
case 17:
return "Surface vehicle - emergency vehicle";
case 18:
return "Surface vehicle - service vehicle";
case 19:
return "Point obstacle";
case 20:
return "Cluster Obstacle";
case 21:
return "Line Obstacle";
default:
return "(reserved)";
}
}
}
Gibt es eine Möglichkeit, diese Struktur in ein Enum so umzuformen, dass ich das Enum mit einem ganzzahligen Wert konstruiere, aber ich "lese" das Enum als String? Ich bin mir ziemlich sicher, dass die Antwort nein ist.
Ich verstehe deine Frage nicht, um ehrlich zu sein. Dog.BT und Dog.BULL? 'lass d = Hund (rawValue:" Bulldog ")'? –
Oder meinst du das: http://StackOverflow.com/Questions/24007461/How-to-enumerate-an-enum-with-string-Typ –
ähnlich, aber nicht genau. – Jeef