Вам нужно сделать тип Status
универсальным, чтобы компилятор знал, что вы передадите конкретный тип, соответствующий протоколу Status
, чтобы он был декодируемым и кодируемым.
class ProdEvent<T: Status> : Codable {
let status : T
}
class MyCollection<T: Status> : Codable {
let arr_events : [ProdEvent<T>]
}
Теперь вы можетеmake ProdEvent
и MyCollection
объект любого типа Status
, как показано ниже,
var aEvent: ProdEvent<StatusA>!
var bEvent: ProdEvent<StatusB>!
var aCollection: MyCollection<StatusA>!
var bCollection: MyCollection<StatusB>!
Вы также можете проверить этот поток , почему вы не можете использовать протоколкак конкретный тип.