{"id":238,"date":"2022-06-26T22:17:00","date_gmt":"2022-06-26T14:17:00","guid":{"rendered":"https:\/\/www.hlzhy.com\/?p=238"},"modified":"2022-06-29T09:44:42","modified_gmt":"2022-06-29T01:44:42","slug":"swift-codable-%e8%a7%a3%e7%a0%81%e4%b8%ba%e6%95%b0%e7%bb%84%e8%ae%be%e5%ae%9a%e9%bb%98%e8%ae%a4%e5%80%bc","status":"publish","type":"post","link":"https:\/\/www.hlzhy.com\/?p=238","title":{"rendered":"Swift Codable \u89e3\u7801\u4e3a\u6570\u7ec4\u8bbe\u5b9a\u9ed8\u8ba4\u503c"},"content":{"rendered":"\n<p>\u901a\u8fc7<a target=\"_blank\" href=\"https:\/\/onevcat.com\/\" rel=\"noreferrer noopener\">onevcat<\/a>\u7684<a href=\"https:\/\/onevcat.com\/2020\/11\/codable-default\/\" target=\"_blank\" rel=\"noreferrer noopener\">\u300a\u4f7f\u7528 Property Wrapper \u4e3a Codable \u89e3\u7801\u8bbe\u5b9a\u9ed8\u8ba4\u503c\u300b<\/a>\u6587\u7ae0\u5185\u5bb9\u6211\u4eec\u53ef\u4ee5\u4e3a\u57fa\u7840\u7c7b\u578b\u8bbe\u5b9a\u9ed8\u8ba4\u503c\u3002\u8fd9\u91cc\u53c2\u7167\u7ed9\u51fa\u4e3a\u6570\u7ec4\u8bbe\u5b9a\u9ed8\u8ba4\u503c\u7684\u65b9\u6cd5\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>@propertyWrapper\nstruct DefaultArray&lt;Element: Codable&gt;: Codable {\n    var wrappedValue: &#91;Element]\n}\n\nextension DefaultArray {\n    init(from decoder: Decoder) throws {\n        let container = try decoder.singleValueContainer()\n        wrappedValue = (try? container.decode(&#91;Element].self)) ?? &#91;Element]()\n    }\n}\n\nextension KeyedDecodingContainer {\n    func decode&lt;E&gt;(\n        _ type: DefaultArray&lt;E&gt;.Type,\n        forKey key: Key\n    ) throws -&gt; DefaultArray&lt;E&gt;  {\n        try decodeIfPresent(type, forKey: key) ?? DefaultArray(wrappedValue: &#91;E]())\n    }\n}\n<\/code><\/pre>\n\n\n\n<p>\u4f7f\u7528\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>struct ExampleModel: Codable {\n    @DefaultArray\n    var hank: &#91;String]\n    @DefaultArray\n    var zhy: &#91;ZhyModel]\n}<\/code><\/pre>\n\n\n\n<p><\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>\u901a\u8fc7onevcat\u7684\u300a\u4f7f\u7528 Property Wrapper \u4e3a Codable \u89e3\u7801\u8bbe\u5b9a\u9ed8\u8ba4\u503c\u300b\u6587\u7ae0\u5185\u5bb9\u6211\u4eec\u53ef\u4ee5\u4e3a\u57fa\u7840\u7c7b\u578b\u8bbe\u5b9a\u9ed8\u8ba4\u503c\u3002\u8fd9\u91cc &hellip; <a href=\"https:\/\/www.hlzhy.com\/?p=238\" class=\"more-link\">\u7ee7\u7eed\u9605\u8bfb <span class=\"screen-reader-text\">Swift Codable \u89e3\u7801\u4e3a\u6570\u7ec4\u8bbe\u5b9a\u9ed8\u8ba4\u503c<\/span><\/a><!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[4,24],"_links":{"self":[{"href":"https:\/\/www.hlzhy.com\/index.php?rest_route=\/wp\/v2\/posts\/238"}],"collection":[{"href":"https:\/\/www.hlzhy.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hlzhy.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hlzhy.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hlzhy.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=238"}],"version-history":[{"count":3,"href":"https:\/\/www.hlzhy.com\/index.php?rest_route=\/wp\/v2\/posts\/238\/revisions"}],"predecessor-version":[{"id":243,"href":"https:\/\/www.hlzhy.com\/index.php?rest_route=\/wp\/v2\/posts\/238\/revisions\/243"}],"wp:attachment":[{"href":"https:\/\/www.hlzhy.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=238"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hlzhy.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=238"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hlzhy.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=238"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}