Swift中json转model报No value associated with key CodingKeys
发布网友
发布时间:2023-03-13 20:16
我来回答
共1个回答
热心网友
时间:2023-10-21 16:13
在网络请求中,json转模型是最常见的操作了,在OC时代,我们通常用MJExtension进行转换。在Swift中,数据转换更加方便,只要模型遵循Codable协议,就可以原生进行转换。
例如,定义的模型如下:
服务器返回的数据是酱紫:
然后我们可以进行data->struct的转换
但是问题来了,有时候这个模型还需要别的存储属性,例如你需要一个名字为“is_show”的属性,默认值为false,于是struct改成了:
乍一看好像没有问题,但是一运行,Xcode就报No value associated with key CodingKeys,认真想了一下,原来是把is_show赋初值后就忘记加上“?”了,这样它就不是可选类型,但是返回的数据中又没有这个字段,所以就报错了。因此,一个struct的存储属性应该都定义为可选类型。为了方便和安全,同时也应该赋初值。
最后修改成: