Codable: не соответствует протоколу Decodable

Не могу понять, почему мой класс не соответствует Codable. Обратите внимание, что в моем случае мне не нужно реализовывать методы encode и decode.

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
    }

}

person Community    schedule 30.05.2018    source источник


Ответы (1)


Это потому, что NSNumber не кодируется. Не используйте типы Objective-C; используйте типы Swift. (Это общее правило; оно не ограничивается ситуацией Codable. Но это хороший пример того, почему правило хорошее!)

Измените NSNumber на Int или Double (в обоих местах, где это встречается в вашем коде), и все будет хорошо.

person matt    schedule 30.05.2018