ios - Alamofire:具有额外属性的可编码对象
问题描述
我有一个使用 Alamofire 检索的 Codable 对象模型。但是我想在模型中添加额外的布尔变量,这不是服务器端模型的一部分,这在 iOS 上可能吗?
为了符合 Codable 协议,我需要将它添加到 CodingKeys 枚举中,但如果我这样做了,它会尝试从不存在的服务器解析属性。
解决方案
您可以简单地为应该只存在于您的 iOS 应用程序模型类中的属性提供一个默认值,然后从您的模型类/结构中省略该属性的名称,CodingKey
enum
您的模型类/结构仍将符合,Codable
而无需将该属性编码/解码到/从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)
}
推荐阅读
- python - 从列表中提取值并使用 python 创建嵌套字典
- c++ - C++ 类成员的用户定义比较器
- javascript - jQuery按钮中的jQuery按钮onclick不起作用
- python - cv2.waitKey(0) 不要等待
- post - AWS Lambda Serverless 终端节点退出而不执行函数
- api - 如何从 Tizen Web 应用程序启动配套的 Android 应用程序?
- laravel - 如何在不同的按钮单击时将表单重定向到不同的 url
- excel - 如何用可变内容替换文本
- java - webflux 大量 boundedElastic-evictor TIMED_WAITING
- python - 用于文本分类的预训练模型