我虽然固守了这个观念!
我正在发送包含双精度的JSON。
{"elementName":"Security:Driver","element_Cost":"650"}
Run Code Online (Sandbox Code Playgroud)
我已经创建了CodingKeys和一个解码器扩展,但是在发送数据时仍然出现Type Mismatch错误。
struct ElementCosts: Content {
let elementName: String
let elementCost: Double
enum CodingKeys: String, CodingKey {
case elementCost = "element_Cost"
case elementName
}
}
extension ElementCosts: Decodable {
public init(from decoder: Decoder) throws {
let values = try decoder.container(keyedBy: CodingKeys.self)
elementCost = try values.decode(Double.self, forKey: .elementCost)
elementName = try values.decode(String.self, forKey: .elementName)
}
}
Run Code Online (Sandbox Code Playgroud)
在这里查看其他一些帖子,我看不到我做错了什么。
我试图将数据类型更改为Int,但仍然存在相同的问题。
有任何想法吗?
"650" 是一个字符串,而不是数字。
你可以这样解析
let elementCostString = try values.decode(String.self, forKey: .elementCost)
elementConst = Double(elementCostString) ?? 0
Run Code Online (Sandbox Code Playgroud)
或将其更改为模型上的字符串,以哪种效果更好。
| 归档时间: |
|
| 查看次数: |
248 次 |
| 最近记录: |