传递类型以便稍后解码

时间:2017-12-04 09:48:07

标签: swift generics

我尝试在枚举中传递一个类型来存储它,并在此类数据到达时对其进行解码。 我将问题传递给解码器时遇到了问题。

enum RetrieveInfoPolicy {
    case decoding(Decodable.Type)
    case no
}

struct Foo: Codable {
    let str: String
}

let policy = RetrieveInfoPolicy.decoding(Foo.self)

let decoder = JSONDecoder()
let dataTest = "ldghglhezlkhgzeklh".data(using: .utf8)!

switch policy {
    case .no:
        break

    case .decoding(let decodableType):
        do {
            let decoded = try decoder.decode(decodableType, from: dataTest)
        } catch {
            print("error : \(error)")
        }
        break
}

我得到的错误是:

  

无法使用类型为'((Decodable.Type)的参数列表调用'decode',来自:Data)'

你能帮我解决这个问题吗? 谢谢!

0 个答案:

没有答案