let storedObject: Data = UserDefaults.standard.object(forKey: "SavedHighScoreArray") as! Data highScores = try! PropertyListDecoder().decode([HighScore].self, from: storedObject)
每当它运行时(并且UserDefaults为空),我会得到以下错误:
无法将“NSCFArray”(0x10cfca0b8)类型的值强制转换为“NSData”(0x10cfc75e8)。
有人能告诉我这里有什么问题吗?
如果你不确定你为那把钥匙保存了什么,你就不能强制施放 object(forKey: "SavedHighScoreArray") as! Data
object(forKey: "SavedHighScoreArray") as! Data
你好像把东西存进去了 UseDefaults 作为 Array
UseDefaults
Array
相反,您可以使用 guard let 或者 if let
guard let
if let
guard let data = UserDefaults.standard.object(forKey: "SavedHighScoreArray") as? Data else { \\do something here for the fallback return }