Alamofire:具有额外属性的可编码对象
Posted
技术标签:
【中文标题】Alamofire:具有额外属性的可编码对象【英文标题】:Alamofire: Codable object with extra property 【发布时间】:2018-10-15 12:08:05 【问题描述】:我有一个使用 Alamofire 检索的 Codable 对象模型。但是我想在模型中添加额外的布尔变量,这不是服务器端模型的一部分,这在 ios 上可能吗?
为了符合 Codable 协议,我需要将它添加到 CodingKeys 枚举中,但如果我这样做了,它会尝试从不存在的服务器解析属性。
【问题讨论】:
添加一些关于你所做的事情的代码。在这种情况下很容易为您提供帮助。 你想用那个额外的变量来实现什么?您可以将其设为可选,如果 API 响应中不存在它,它将始终为 nil。对于其他任何事情,您都应该使用计算属性。 【参考方案1】:您可以简单地为应该只存在于您的 iOS 应用程序模型类中的属性提供一个默认值,然后从您的 CodingKey
enum
中省略该属性的名称,您的模型类/结构仍将符合 @987654323 @ 无需将该属性编码/解码到 JSON。
您可以在下面找到一个示例。
struct Person: Decodable
let name:String
let age:Int
var cached = false //not part of the JSON
enum CodingKeys:String,CodingKey
case name, age
let json = """
"name":"John",
"age":22
"""
do
let person = try JSONDecoder().decode(Person.self,from: json.data(using: .utf8)!)
print(person) // Person(name: "John", age: 22, cached: false)
catch
print(error)
【讨论】:
以上是关于Alamofire:具有额外属性的可编码对象的主要内容,如果未能解决你的问题,请参考以下文章
将可编码结构编码为 Alamofire POST 参数 - Swift