【问题标题】:Error when trying to get data from UserDefaults when it is empty尝试从 UserDefaults 为空时获取数据时出错
【发布时间】:2019-05-13 14:22:51
【问题描述】:

我有这段代码

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

谁能告诉我这是什么问题?

【问题讨论】:

    标签: ios swift decode


    【解决方案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  }
    

    【讨论】:

      猜你喜欢
      • 2020-07-25
      • 1970-01-01
      • 2020-08-10
      • 2020-06-01
      • 1970-01-01
      • 2021-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多