我创建了一个模型,用Codable协议将我的Api响应映射到swift结构。但它总是返回零。 注意: - 如果我从模型中删除isSelected它可以完美运行。 但我需要这个键来管理用户的选择。 此外,如果我尝试这种方法与类,它总是返回自我是不可变的错误。 任何人都面对这个问题也请帮助我将此代码转换为swift类
struct CustomCodingKey:CodingKey {
var stringValue: String
var intValue: Int?
init?(stringValue: String) {
self.stringValue = stringValue
self.intValue = nil
}
init?(intValue: Int) {
self.stringValue = String(intValue)
self.intValue = intValue
}
}
struct Field: Codable {
var type: String
var label: String
var name: String
var isSelected = false
init?(json: JSON) {
do {
let data = try JSONSerialization.data(withJSONObject: json, options: .prettyPrinted)
let decoder = JSONDecoder.init()
decoder.keyDecodingStrategy = .custom { keys -> CodingKey in
let key = keys.last!.stringValue.split(separator: "-").joined()
print(key)
return CustomCodingKey(stringValue: String(key))!
}
self = try decoder.decode(Field.self, from: data)
} catch {
return nil
}
}
var json: JSON {
do {
let data = try JSONEncoder().encode(self)
if let tempJson = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? JSON {
return tempJson
}
return JSON()
} catch {
return JSON()
}
}
}