【问题标题】:iOS Generic type for codable property in SwiftSwift 中可编码属性的 iOS 通用类型
【发布时间】:2023-03-14 09:43:02
【问题描述】:

我需要获取一个用于解析 JSON 的结构的通用变量

但是我遇到了一个错误 类型“BaseJsonModel”不符合协议“Codable”

下面是我的结构

  struct BaseJsonStruct<T>: Codable {
    let info: String
    let data: T
 }

错误:- 类型“BaseJsonModel”不符合协议“Codable”

【问题讨论】:

    标签: ios swift codable


    【解决方案1】:

    T也必须符合Codable

    struct BaseJsonStruct<T : Codable> : Codable {
        let info: String
        let data: T
    }
    

    【讨论】:

    • 如果我使用 let item = try?解码器.解码(BaseJsonStruct.self,来自:数据)。比我得到错误 - 无法推断通用参数“T”
    • 你有没有同样的想法
    • 你必须指定静态类型例如decoder.decode(BaseJsonStruct&lt;String&gt;.self, from: data
    • 试过了,但是变量中的值是 nil let itm1 = try?解码器.解码(BaseJsonStruct.self,来自:数据)。但它现在编译了 aleast
    • 不,在您使用泛型时,您必须指定静态类型。 BaseJsonStruct&lt;T&gt; 是不可能的,它必须是BaseJsonStruct&lt;String&gt;BaseJsonStruct&lt;Int&gt; 或其他符合Codable 的东西。 Codable 依赖于具体类型。解码器无法解码动态类型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-14
    • 1970-01-01
    • 1970-01-01
    • 2021-07-14
    • 2023-02-01
    • 1970-01-01
    • 2018-10-05
    相关资源
    最近更新 更多