如果使用错误的NSCoding函数解码数据类型,则应用程序崩溃。例如,如果DoubleKey
实际上表示decodeInteger
所期望的双倍而不是整数,则此行将崩溃:
let isReallyDouble = aDecoder.decodeInteger(forKey: DoubleKey)
如何在解码前验证数据类型?如果应用程序的版本1将某个值编码为整数,但版本5必须将该变量更改为double,这一点很重要。
这适用于Swift 3,其中decodeObject
不适用于整数和双精度等值类型:Swift 3 saving and retrieving custom object from userDefaults
导致崩溃,而不是返回nil
,当数据类型不匹配时,似乎是一个非常糟糕的设计选择。
答案 0 :(得分:1)
Apple在2018年的WWDC上进行了名为“您可以信任的数据”的演讲。主题之一讨论了NSCodeable对象的解码。请参阅下面的链接以访问演讲。强烈推荐。