我有一些枚举值要转换为JSONDecoder Decodable.Protocol类型
可以在decode
方法中使用。
每个属性枚举都对应一个Codable
类。
enum Attributes : String {
case Shapes = "GetShapes"
case Color = "GetColors"
case Size = "GetSizes"
}
我认为我可以动态地将 enum 强制转换为正确的协议,从而节省大量代码。
例如
let results = try? JSONDecoder().decode(GetShapes.self, from: jsonData)
请注意,GetShapes.self
对应于 Attributes 枚举的值。
所以我尝试使用NSProtocolFromString
,但这似乎并没有解决问题。
if let protoRef = NSProtocolFromString(anAttribute.rawValue) {
if let results = try? JSONDecoder().decode(protoRef, from: jsonData) {
//Do something
}
能够将字符串转换为协议会节省很多工作。
希望这可以澄清:
基本上,使用字符串“ GetShapes”,使用一些MagicMethod()使其吐出
GetShapes.self
满足JSONDecoder().decode(type: Decodable.Protocol, from: Data)
类似这样的方法:
func magicMethod(_ string: String) -> Decodable.Protocol {
}
Swift 4有可能吗?