类型'AllImage'未遵循'Decodable'/'Encodable'协议的解决办法
问题解决方案
你遇到的报错核心原因是:AllImage结构体的CodingKeys枚举中声明了ctaInfo = "cta_info"这个编码键,但结构体本身并没有定义对应的ctaInfo属性。Codable协议要求编码/解码的键必须和结构体的属性一一对应,这种不匹配直接导致了协议不兼容的错误。
针对这个问题,有两种明确的解决方案:
- 方案一:如果接口返回的JSON中确实包含
cta_info字段,且需要解析这个字段,就在结构体中添加对应的可选属性:
struct AllImage: Codable { let mediaReferenceID: String? let url: String? let title: String? let description: String? let icon: String? let tags: [TagInfo]? let footerSection: FooterSection? // 添加与CodingKeys匹配的属性,类型根据实际返回值调整 let ctaInfo: String? enum CodingKeys: String, CodingKey { case mediaReferenceID = "media_reference_id" case url, title, description, icon case ctaInfo = "cta_info" case footerSection = "footer_section" } }
- 方案二:如果不需要解析
cta_info字段,直接删除CodingKeys中多余的ctaInfo条目即可:
struct AllImage: Codable { let mediaReferenceID: String? let url: String? let title: String? let description: String? let icon: String? let tags: [TagInfo]? let footerSection: FooterSection? enum CodingKeys: String, CodingKey { case mediaReferenceID = "media_reference_id" case url, title, description, icon case footerSection = "footer_section" } }
内容的提问来源于stack exchange,提问作者Arnab Datta
相关产品推荐
相关产品推荐

