【发布时间】:2020-09-19 02:40:01
【问题描述】:
我试图完成一个具有发布值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
}
}
}
}
我知道这是否是最佳做法,但我想将数据保存在本地。 我写的代码不起作用,我不知道为什么。
我是初学者,我从未将数据存储到设备中。
【问题讨论】:
标签: swift xcode swiftui observableobject