Swift API响应模型适配:处理动态新增的additional_data字段
解决Swift Codable动态字段解析问题
你的核心问题在于自定义了DataClass的init(from:)方法,其实完全没必要——Swift的Codable原生就支持可选字段的自动处理:当JSON中不存在对应key时,可选属性会自动被设为nil,反而自定义初始化可能引入不必要的复杂度。
调整后的模型代码
struct ServicingModel: Codable { var data: DataClass? var code: Int? var message: String? } struct DataClass: Codable { var id: Int? var status: String? var additionalData: AdditionalData? enum CodingKeys: String, CodingKey { case id, status case additionalData = "additional_data" } // 移除自定义init,使用Swift自动合成的Codable实现 } struct AdditionalData: Codable { var id, bookingID: Int? var checklistDone: String? var workWithPrice: String? var workPrice: String? var status: String? enum CodingKeys: String, CodingKey { case id case bookingID = "booking_id" case checklistDone = "checklist_done" case workWithPrice = "work_with_price" case workPrice = "work_price" case status } }
效果说明
- 当API返回
status: "open"(无additional_data字段)时,additionalData会自动赋值为nil,解析流程正常。 - 当API返回
status: "completed"(包含additional_data字段)时,Codable会自动解析该嵌套对象并赋值给additionalData。
如果确实需要保留自定义初始化逻辑(比如有额外业务处理),你原有的init(from:)逻辑本身是正确的,但需要检查是否存在拼写错误或其他细节问题——不过移除自定义初始化是最简洁可靠的解决方案。
内容的提问来源于stack exchange,提问作者Arish Patel
相关产品推荐
相关产品推荐

