如何从枚举中获取原始值传递键值?必须适用于任何类似于枚举类型扩展的枚举类型。 欢迎任何镜像反射,可映射或RawRepresentable解决方案。
我想要这样的事情:
enum Test : String {
case One = "1"
}
Test.rawValueFromKey(keyValue: "One") // Must return "1"
// I don't want the solution below, I must get the rawValue through the key name as String.
Test.One.rawValue
我需要让rawValue将键的名称作为String传递。否则,我将需要进行切换或许多if / else条件。我有一个很大的枚举,我不想检查交换机中传递的字符串,例如并传递Test.One.rawValue
。我想直接通过键得到rawValue作为String,就像在字典中一样。
我也不想要下面的代码,因为我有40个项目的枚举,我认为切换40个项目很难看。
switch keyValue {
case "One":
return Test.One.rawValue
break
}
我想要这样的事情:
func rawValueFromKey (keyValue: String) -> Test {
// code here to get the rawValue through the keyValue as String
// return the proper Test Enum
}
我尝试了一些可能的解决方案,使用镜像反射和枚举迭代来通过keyValue查找rawValue但是没有用。
请在Swift 2和3中提供解决方案。
由于
答案 0 :(得分:0)
据我所知,您无法反映类型,因此我认为您只能使用import csv
import pandas as pd
df = pd.DataFrame(
data=[[ 0, 0, 2, 5, 0],
[1478, 3877, 3674, 2328, 2539],
[1613, 4088, 3991, 6461, 2691],
[1560, 3392, 3826, 4787, 2613],
[1608, 4802, 3932, 4477, 2705],
[1576, 3933, 3909, 4979, 2685],
[ 95, 229, 255, 496, 201],
[ 2, 0, 1, 27, 0],
[1438, 3785, 3589, 4174, 2215],
[1342, 4043, 4009, 4665, 3033]],
index=['05-01-11', '05-02-11', '05-03-11', '05-04-11', '05-05-11',
'05-06-11', '05-07-11', '05-08-11', '05-09-11', '05-10-11'],
columns=['R003', 'R004', 'R005', 'R006', 'R007']
)
myDATA=df.to_dict();
header=myDATA.keys()
with open("TestTry.csv", "w") as g:
writer = csv.DictWriter(g, delimiter=",", fieldnames=header,lineterminator='\r\n')
writer.writeheader()
for row in myDATA:
writer.writerow(row)
或使用本地化字符串来映射值/键来实现此目的。你不得不以某种方式映射。