代码之家  ›  专栏  ›  技术社区  ›  Boris Grunwald

尝试从空的用户默认值获取数据时出错

  •  0
  • Boris Grunwald  · 技术社区  · 5 年前

    let storedObject: Data = UserDefaults.standard.object(forKey: "SavedHighScoreArray") as! Data
    highScores = try! PropertyListDecoder().decode([HighScore].self, from: storedObject)
    

    每当它运行时(并且UserDefaults为空),我会得到以下错误:

    无法将“NSCFArray”(0x10cfca0b8)类型的值强制转换为“NSData”(0x10cfc75e8)。

    有人能告诉我这里有什么问题吗?

    2 回复  |  直到 5 年前
        1
  •  1
  •   Alastar    5 年前

    如果你不确定你为那把钥匙保存了什么,你就不能强制施放 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  }