使用 @ 字符在 UserDefaults 上崩溃

Crash on UserDefaults with @ character

我的应用在这行代码上崩溃了

let test = UserDefaults.standard.value(forKey: "@")

这看起来像是 Apple 的问题,UserDefaults 似乎不接受以 @

开头的密钥

有没有人遇到过这个问题并有解决方案?

这是错误信息

Terminating app due to uncaught exception 'NSUnknownKeyException', 
reason: '[<NSUserDefaults 0x6100000443b0> valueForUndefinedKey:]: 
this class is not key value coding-compliant for the key .'

问题是您误用了键值编码。不要使用 value(forKey:) 除非您清楚地了解需要使用键值编码从用户默认值中获取数据。 @符号在键值编码中有特殊含义。

正确的解决方法是使用object(forKey:)方法:

let test = UserDefaults.standard.object(forKey: "@")

或根据存储数据的数据类型从 UserDefaults 读取数据的更具体方法之一。