Swift 中可编码属性的 iOS 通用类型
Posted
技术标签:
【中文标题】Swift 中可编码属性的 iOS 通用类型【英文标题】:iOS Generic type for codable property in Swift 【发布时间】:2018-09-06 19:49:29 【问题描述】:我需要获取一个用于解析 JSON 的结构的通用变量
但是我遇到了一个错误 类型“BaseJsonModel”不符合协议“Codable”
下面是我的结构
struct BaseJsonStruct<T>: Codable
let info: String
let data: T
错误:- 类型“BaseJsonModel”不符合协议“Codable”
【问题讨论】:
【参考方案1】:T
也必须符合Codable
struct BaseJsonStruct<T : Codable> : Codable
let info: String
let data: T
【讨论】:
如果我使用 let item = try?解码器.解码(BaseJsonStruct.self,来自:数据)。比我得到错误 - 无法推断通用参数“T” 你有没有同样的想法 你必须指定静态类型例如decoder.decode(BaseJsonStruct<String>.self, from: data
试过了,但是变量中的值是 nil let itm1 = try?解码器.解码(BaseJsonStructBaseJsonStruct<T>
是不可能的,它必须是BaseJsonStruct<String>
或BaseJsonStruct<Int>
或其他符合Codable
的东西。 Codable
依赖于具体类型。解码器无法解码动态类型。以上是关于Swift 中可编码属性的 iOS 通用类型的主要内容,如果未能解决你的问题,请参考以下文章
可编码的自定义类类型属性不能从 JSON 初始化它自己的属性