gpt4 book ai didi

Swift 枚举一个字符串和一个 int

转载 作者:IT王子 更新时间:2023-10-29 05:13:06 24 4
gpt4 key购买 nike

我有这样一种情况,我正在尝试对某些数据进行二进制解码,而数据类型既有数值又有字符串值和名称。我正在考虑使用枚举,例如:

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"
}

不过我也知道:

TT_INVALID = 0TT_TRUE_TRACK_ANGLE = 1 等。有没有一种简单的方法可以将字符串和数值这两个“东西”封装到枚举结构中,或者我需要制作某种结构/类来处理这个吗?

我想我想做类似的事情

让 a = TARGET_TRACK_TYPE.rawValue(value: 2)println(a)

这将打印 True Track Angle

同样,我知道这可以通过结构或类来完成,但我对枚举特别感兴趣

或者再举一个例子:

/// 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)";
}
}
}

有没有一种方法可以将此结构重构为枚举,以便我用整数值构造枚举,但我将枚举“读取”为字符串?我很确定答案是否定的。

最佳答案

我认为这会为我做到。谢谢你自己.. :)

protocol GDL90_Enum  {
var description: String { get }
}

enum TARGET_ADDRESS_TYPE : Int, GDL90_Enum {
case ADSB_ICAO_ADDRESS = 0
case ADSB_SELF_ADDRESS = 1
case TISB_ICAO = 2
case TISB_TRACK_ID = 3
case SURFACE_VEHICLE = 4
case GROUND_STATION = 5

var description: String {
switch self {
case .ADSB_ICAO_ADDRESS:
return "ADS-B with ICAO address"
case .ADSB_SELF_ADDRESS:
return "ADS-B with Self-assigned address"
case .TISB_ICAO:
return "TIS-B with ICAO address"
case .TISB_TRACK_ID:
return "TIS-B with track file ID"
case .SURFACE_VEHICLE:
return "Surface Vehicle"
case .GROUND_STATION:
return "Ground Station Beacon"
default:
return "Reserved"
}
}
}

关于Swift 枚举一个字符串和一个 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28461133/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com