从 UserDefaults 解码不返回任何数据

Decode from UserDefaults is not returning any data

我正在尝试将数据从 Struct 保存到 UserDefaults 中,然后从中读取。到目前为止,代码似乎可以对数据进行编码,但是当我尝试解码时,它没有 return 任何数据。

请在下面找到我的代码:

我的结构:

struct GameSetting: Codable {
var gameSetupText: String?
var gamePicker: Int
var groupSetupButton: Int }

要写入 Userdefaults:

public let defaults = UserDefaults.standard

public let encoder = JSONEncoder()

func encodeDefault(dataModel: [GameSetting]) {
    if let encodedModel = try? encoder.encode(dataModel) {
        defaults.set(encodedModel, forKey: "encodedModel")
    }
}

为了解码,我使用了以下代码:

   public let decoder = JSONDecoder()
    
    if let savedModel = defaults.value(forKey: "encodedModel") as? Data {
        
        if let decodedData = try? decoder.decode(GameSetting.self, from: savedModel) {
            print("Decoded data: \(decodedData)")
            
        }
    }

我在 SO 和其他资源中搜索过,但似乎没有找到我需要的答案。希望你能帮助我,并就下一步该怎么做提供一些建议?

感谢您推荐使用 Do/Catch 或 Try/Catch,因为它表明我的代码中存在类型错误。我编码了一个数组:[GameSetting],但解码了一个字典 GameSetting。更正后的代码在这里:

  public let decoder = JSONDecoder()

if let savedModel = defaults.value(forKey: "encodedModel") as? Data {
    
    if let decodedData = try? decoder.decode([GameSetting].self, from: savedModel) {
        print("Decoded data: \(decodedData)")
        
    }
}