Я хочу создать класс, в котором будет храниться Date
и любой объект, соответствующий протоколу Codable
. Я хотел бы, чтобы этот класс также соответствовал самому протоколу Codable
.
Я могу сделать это для одного объекта следующим образом:
class CodableContainerA: NSObject, Codable {
var date: Date?
var item: CodableTypeA?
}
Я бы предпочел не создавать отдельный CodableContainerX для каждого CodableTypeX, который у меня есть.
Мой текущий обходной путь состоит в том, чтобы создать класс с именем CodableBaseClass
, который соответствует Codable
, вывести из него каждый CodableType и определить мой класс следующим образом:
class CodableContainer: NSObject, Codable {
var date: Date?
var item: CodableBaseClass?
}
Это кажется долгим путем и похоже на то, что я должен сделать, заставив CodableType
соответствовать протоколу, но я не уверен, как это сделать. Если я определяю item
как тип Codable?
или (Any & Codable)?
, я получаю сообщение об ошибке
Type 'CodableContainer' does not conform to protocol 'Decodable'
Я использую Свифт 4.
Любая помощь или совет будут приняты с благодарностью. Большое спасибо,