动态将字符串转换为JSONDecoder Decodable.Protocol类型

时间:2018-10-10 16:54:43

标签: swift codable jsondecoder

我有一些枚举值要转换为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)

type 参数

类似这样的方法:

func magicMethod(_ string: String) -> Decodable.Protocol {

}

Swift 4有可能吗?

0 个答案:

没有答案