Codable:不符合协议'可解码'

5 swift codable decodable

无法理解为什么我的类不符合Codable请不要在我的情况下我不需要实现编码解码方法.

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
    }

}
Run Code Online (Sandbox Code Playgroud)

mat*_*att 13

这是因为NSNumber不是Codable.不要使用Objective-C类型; 使用Swift类型.(这是一般规则;它不仅限于Codable情况.但这是一个很好的例子,为什么规则是好的!)

将NSNumber更改为Int或Double(在代码中出现的两个位置),一切都会很好.