и то же самое для закодированного, мы должны привести к фактическому типу перед кодированием:

я есть протокол, который унаследован от кодируемого

protocol OrderItem:Codable {
    var amount:Int{get set}
    var isPaid:Bool{get set}
} 

И структура соответствует этому протоколу

struct ProductItem:OrderItem {
    var amount = 0
    var isPaid = false
    var price = 0.0
}

Однако когда я поместил эту структуру в кодируемую структуру, я получил ошибки

struct Order:Codable {
    var id:String
    var sn:String = ""
    var items:[OrderItem] = []
    var createdAt:Int64 = 0
    var updatedAt:Int64 = 0
}

Ошибки

Type 'Order' does not conform to protocol 'Encodable'
Type 'Order' does not conform to protocol 'Decodable'

Но если я изменю элементы: [OrderItem] на элементы: [ProductItem], все работает!

Как я могу решить эту проблему?

Ответы на вопрос(1)

Ваш ответ на вопрос