Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 可编码所有密钥解码为可选,但不是可选_Ios_Json_Swift4_Codable - Fatal编程技术网

Ios 可编码所有密钥解码为可选,但不是可选

Ios 可编码所有密钥解码为可选,但不是可选,ios,json,swift4,codable,Ios,Json,Swift4,Codable,Codable易于使用,不需要编写太多相同的代码 但是当我在更新应用程序后使用addnewvariable到Codable时 JSONDecoder抛出KeyNotFoundError 如果我将declear变量作为可选变量,它将不会抛出KeyNotFoundError 但任何东西都是可选的,不好用 如何将解码策略更改为“如果键不存在,则忽略变量”,并且每个变量都不是可选的,并且不为decodeIfPresent()写入echo变量 在初始化类时忽略非可选变量在术语上是矛盾的。非可选变量必须获得

Codable易于使用,不需要编写太多相同的代码

但是当我在更新应用程序后使用addnewvariable到Codable时

JSONDecoder抛出KeyNotFoundError

如果我将declear变量作为可选变量,它将不会抛出KeyNotFoundError

但任何东西都是可选的,不好用

如何将解码策略更改为“如果键不存在,则忽略变量”,并且每个变量都不是可选的,并且不为decodeIfPresent()写入echo变量


在初始化类时忽略非可选变量在术语上是矛盾的。非可选变量必须获得初始值。为了处理不同的情况,我建议编写一个自定义初始值设定项。或者检查应用程序版本并解码到不同的结构/类中。T.T这是可编码的唯一方法,————————————————————看起来我必须为每个变量编写自定义解码器。如果密钥不存在,则可选使用是正确的方法。
class Student: Coadable {
    var name:String = "TheDefaultIWent" ;
    ...ManyVarsInThisClass...
}