解码不匹配的数据类型时应用程序崩溃:如何在使用NSCoding解码之前验证类型?

问题描述 投票:0回答:1

如果使用错误的NSCoding函数解码数据类型,则应用程序崩溃。例如,如果DoubleKey实际上表示decodeInteger所预期的double而不是整数,则此行将崩溃:

    let isReallyDouble = aDecoder.decodeInteger(forKey: DoubleKey)

在解码之前如何验证数据类型?如果应用程序的版本1将某个值编码为整数,但版本5必须将该变量更改为double,这一点很重要。

这适用于Swift 3,其中decodeObject不适用于整数和双精度等值类型:Swift 3 saving and retrieving custom object from userDefaults

导致崩溃,而不是返回nil,当数据类型不匹配时,似乎是一个非常糟糕的设计选择。

ios swift nsuserdefaults nscoding
1个回答
1
投票

苹果公司在2018年的WWDC上发表了一篇名为“你可信赖的数据”的演讲。其中一个主题讨论了NSCodeable对象的解码。请参阅以下链接以访问该演讲。强烈推荐。

https://developer.apple.com/videos/play/wwdc2018/222/

© www.soinside.com 2019 - 2024. All rights reserved.