我有这段代码
let storedObject: Data = UserDefaults.standard.object(forKey: "SavedHighScoreArray") as! Data
highScores = try! PropertyListDecoder().decode([HighScore].self, from: storedObject)
每当它运行(并且UserDefaults为空)时,都会出现以下错误:
无法将类型'__NSCFArray'(0x10cfca0b8)的值强制转换为'NSData'(0x10cfc75e8)。 2019-05-13 16:21:55.225691 + 0200 BrainTrainerSwift [77393:4089984]无法将类型'__NSCFArray'(0x10cfca0b8)的值强制转换为'NSData'(0x10cfc75e8)。
有人可以告诉我这里是什么问题吗?
答案 0 :(得分:1)
如果不确定是否为该键object(forKey: "SavedHighScoreArray") as! Data
保存了某些内容,则无法强制投射
似乎您将项目作为UseDefaults
保存在Array
中。
相反,您可以使用guard let
或if let
,这样应用程序就不会崩溃,并且您可以管理后备广告
guard let data = UserDefaults.standard.object(forKey: "SavedHighScoreArray") as? Data else { \\do something here for the fallback return }