Ho una situazione in cui sto cercando di eseguire la decodifica binaria di alcuni dati e i tipi di dati hanno sia un valore numerico che un valore di stringa e un nome. Stavo pensando di utilizzare un enum come ad esempio:Swift enum sia una stringa che uno
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"
}
Tuttavia so anche che:
TT_INVALID = 0
e TT_TRUE_TRACK_ANGLE = 1
, ecc C'è un modo semplice per incapsulare entrambe queste "cose" la stringa di testo e la numerica valore in un costrutto enum o devo fare una sorta di struct/class per gestire questo?
immagino mi piacerebbe fare qualcosa di simile
let a = TARGET_TRACK_TYPE.rawValue(value: 2)
println(a)
che stampare True Track Angle
Ancora una volta, so che questo può essere fatto con una struttura o di una classe, ma io' m specificamente interessato all'enum
O per un altro esempio:
/// 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)";
}
}
}
C'è un modo per rifattorizzare questa struttura in un enum in modo tale che io costruisca l'enum con un valore intero ma "leggo" l'enum come una stringa? Sono abbastanza sicuro che la risposta sia no.
Non capisco la tua domanda, ad essere onesti. Dog.BT e Dog.BULL? 'let d = Dog (rawValue:" Bulldog ")'? –
O intendi questo: http://stackoverflow.com/questions/24007461/how-to-enumerate-an-enum-with-string-type –
simile ma non esattamente. – Jeef