ios – 当JSON中缺少键时,Swift可编码,默认值为Class属性
发布时间:2020-12-14 17:26:52 所属栏目:百科 来源:网络整理
导读:如你所知,Codable是 swift 4中的新东西,所以我们将从模型的旧的初始化过程转向这个.通常我们使用以下场景 class LoginModal{ let cashierType: NSNumber let status: NSNumber init(_ json: JSON) { let keys = Constants.LoginModal() cashierType = json[k
如你所知,Codable是
swift 4中的新东西,所以我们将从模型的旧的初始化过程转向这个.通常我们使用以下场景
class LoginModal { let cashierType: NSNumber let status: NSNumber init(_ json: JSON) { let keys = Constants.LoginModal() cashierType = json[keys.cashierType].number ?? 0 status = json[keys.status].number ?? 0 } } 在JSON中,cashierType Key可能会丢失,因此我们将默认值设为0 现在,使用Codable执行此操作非常简单,如下所示 class LoginModal: Coadable { let cashierType: NSNumber let status: NSNumber } 如上所述,键可能会丢失,但我们不希望模型变量是可选的,那么我们如何使用Codable实现这一点. 谢谢 解决方法
使用init(来自解码器:解码器)设置模型中的默认值.
struct LoginModal: Codable { let cashierType: Int let status: Int enum CodingKeys: String,CodingKey { case cashierType = "cashierType" case status = "status" } init(from decoder: Decoder) throws { let container = try decoder.container(keyedBy: CodingKeys.self) self.cashierType = try container.decodeIfPresent(Int.self,forKey: .cashierType) ?? 0 self.status = try container.decodeIfPresent(Int.self,forKey: .status) ?? 0 } } 资料阅读: do { let data = //JSON Data from API let jsonData = try JSONDecoder().decode(LoginModal.self,from: data) print("(jsonData.status) (jsonData.cashierType)") } catch let error { print(error.localizedDescription) } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |