从 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)")
}
}
我正在尝试将数据从 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)")
}
}