我正在尝试对一个结构体进行编码
struct Configuration : Encodable, Decodable {
private enum CodingKeys : String, CodingKey {
case title = "title"
case contents = "contents"
}
var title : String?
var contents: [[Int]]?
}
我需要将数据转换为JSON格式并存储到UserDefaults.standard的本地密钥中。 我有以下代码:
let jsonString = Configuration(title: nameField.text, contents: newContents)
let info = ["row" as String: jsonString as Configuration]
print("jsonString = \(jsonString)")
//trying to save object
let defaults = UserDefaults.standard
let recode = try! JSONEncoder().encode(jsonString)
defaults.set(recode, forKey: "simulationConfiguration")
//end of saving local
打印返回:
jsonString = Configuration(title: Optional("config"), contents: Optional([[4, 5], [5, 5], [6, 5]]))
所以我认为我正确地创建了这个对象。然而,当我尝试在下一次运行模拟器时检索密钥时,什么也没有发生。 我将以下内容放在AppDelegate中,并且它总是返回“没有配置”。
let defaults = UserDefaults.standard
let config = defaults.string(forKey: "simulationConfiguration") ?? "No Config"
print("from app delegate = \(config.description)")
有什么想法吗?谢谢
UserDefaultEncoded
很有用:https://dev59.com/QFcP5IYBdhLWcg3wFmre#58696740 它可以将任何Codable
结构保存到UserDefaults中。 - kelin