У меня есть такая модель:
struct Cost : Codable {
let id : String?
let label : String?
let value : String?
enum CodingKeys: String, CodingKey {
case id = "id"
case label = "label"
case value = "value"
}
init(from decoder: Decoder) throws {
let values = try decoder.container(keyedBy: CodingKeys.self)
id = try values.decodeIfPresent(String.self, forKey: .id)
label = try values.decodeIfPresent(String.self, forKey: .label)
value = try values.decodeIfPresent(String.self, forKey: .value)
}
func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self)
try container.encode(id, forKey: .id)
try container.encode(label, forKey: .label)
try container.encode(value, forKey: .value)
}
}
У меня есть такой объект:
let newCost = Cost(id: "something", label: "something", value: "something")
Я хочу отправить этот объект в теле запроса POST, поэтому я использовал JSONEncoderпреобразовать это так:
let jsonData = try! JSONEncoder().encode(newCost)
Но jsonData недействителен. В чем проблема?