公開された値を持つ観察可能なオブジェクトを持つことを達成しようとします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
}
}
}
}
これがベスト プラクティスかどうかはわかっていますが、データをローカルに保存したいと考えています。私が書いたコードが機能せず、その理由がわかりません。
私は初心者で、デバイスにデータを保存したことはありません。