Да, вы можете.
Ошибка в том, что вы пропускаете func encode(to encoder: Encoder) throws
в ClassA
.Codable = Encodable & Decodable
, поэтому он пытается найти способ также кодировать ClassA
.ClassB
не кодируется, поэтому он не может делать это автоматически, и вы также не сказали, как это сделать вручную.
Если вам не нужно кодировать ClassA
экземпляры, простосделать это Decodable
.В противном случае реализуйте отсутствующий encode
func.
Или просто включите в работу и сделайте кодировку ClassB
также.Вы можете использовать расширение, чтобы добавить его после факта.Если вы не хотите этого делать, я использовал обходной путь, чтобы объявить небольшую частную кодируемую структуру внутри ClassA
как struct ClassBInfo: Codable
.Используйте это, чтобы получить необходимую информацию, затем прочитайте ее свойства для init ClassB
.