尝试从UserDefaults中获取数据时为空时出错

时间:2019-05-13 14:22:51

标签: ios swift decode

我有这段代码

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)。

有人可以告诉我这里是什么问题吗?

1 个答案:

答案 0 :(得分:1)

如果不确定是否为该键object(forKey: "SavedHighScoreArray") as! Data保存了某些内容,则无法强制投射

似乎您将项目作为UseDefaults保存在Array中。

相反,您可以使用guard letif let,这样应用程序就不会崩溃,并且您可以管理后备广告

guard let data = UserDefaults.standard.object(forKey: "SavedHighScoreArray") as? Data else { \\do something here for the fallback return  }