Как объявить пользовательский объект, например.Таймер в кодируемом классе - PullRequest
0 голосов
/ 15 июня 2019

У меня проблема с кодируемым.Я не могу понять, как инициировать пользовательский объект таймера в кодируемом классе.

    class ShelfItem: Codable {

      var objTimer = Timer()

или я пытаюсь сделать это как

     // var objTimer: Timer()
    }

, но при этом отображается сообщение об ошибке "Тип 'ShelfItem' не соответствует протоколу 'Encodable'"

1 Ответ

0 голосов
/ 15 июня 2019

Нет смысла вводить / декодировать объект Timer.

Чтобы исключить objTimer из кодировки, добавьте CodingKeys для других свойств и пропустите objTimer.

Простой пример (в большинстве случаев вам даже не нужен класс)

struct ShelfItem : Codable {
    let name : String
    var timer : Timer

    private enum CodingKeys : String, CodingKey { case name }

    init(from decoder : Decoder) throws
    {
        let container = try decoder.container(keyedBy: CodingKeys.self)
        name = try container.decode(String.self, forKey: .name)
        timer = Timer()
    }
}
...