我尝试完成具有已发布值的可观察对象training
。在每次更改时,它都应将自定义结构保存为用户默认值。在每次加载(AppState init)时,它应该加载数据:
class AppState: ObservableObject {
var trainings: [Training] {
willSet {
if let encoded = try? JSONEncoder().encode(trainings) {
let defaults = UserDefaults.standard
defaults.set(encoded, forKey: "trainings")
}
objectWillChange.send()
}
}
init() {
self.trainings = []
if let savedTrainings = UserDefaults.standard.object(forKey: "trainings") as? Data {
if let loadedTraining = try? JSONDecoder().decode([Training].self, from: savedTrainings) {
self.trainings = loadedTraining
}
}
}
}
我知道这是否是最佳做法,但我想将数据保存在本地。我写的代码不起作用,我不知道为什么。
我是初学者,我从未将数据存储到设备中。