Codable : 不符合协议'Decodable'

Posted

技术标签:

【中文标题】Codable : 不符合协议\'Decodable\'【英文标题】:Codable : does not conform to protocol 'Decodable'Codable : 不符合协议'Decodable' 【发布时间】:2018-11-09 14:14:23 【问题描述】:

无法弄清楚为什么我的课程不符合 Codable 请注意,在我的情况下,我不需要实现 encodedecode 方法。

public class LCLAdvantagePlusJackpotCache: Codable 
    public let token: String
    public let amount: NSNumber
    public let member: Bool

    public init(token: String, amount: NSNumber, member: Bool) 
        self.token = token
        self.amount = amount
        self.member = member
    

    enum CodingKeys: String, CodingKey 
        case token, amount, member
    


【问题讨论】:

【参考方案1】:

这是因为 NSNumber 不可编码。不要使用 Objective-C 类型;使用 Swift 类型。 (这是一般规则;它不限于 Codable 情况。但这是一个很好的例子,说明了为什么该规则是一个好的规则!)

将 NSNumber 更改为 Int 或 Double(在代码中出现的两个地方),一切都会好起来的。

【讨论】:

以上是关于Codable : 不符合协议'Decodable'的主要内容,如果未能解决你的问题,请参考以下文章

类型 '' 不符合协议 'Decodable'/'Encodable'

Codable和CodingKeys

SwiftUI - 类型“服务”不符合协议“可解码”

swift 中使用Codable进行数据解析

字符串字典:任何不符合协议“可解码”[重复]

符合 Codable 协议的类因 encodeWithCoder 失败:无法识别的选择器发送到实例