構造体の配列に色々なデータを詰め込んでまとめて保存する方法。
構造体にCodableを継承すれば1行でセーブとロードができて簡単だった。
データのモデル用にクラスを作成して、セーブデータがあればイニシャライザの中でデータの読み込み、無ければ空の配列を読むようにしています。
データをセーブするときには専用の関数を作って任意のタイミングでセーブします。
import Foundation class TrainingData:ObservableObject{ @Published var gym: [Gym] init() { if let data = UserDefaults.standard.value(forKey:"trainings") as? Data { self.gym = try! PropertyListDecoder().decode(Array<Gym>.self, from: data) }else{ self.gym = [] } } func saveData(){ UserDefaults.standard.set(try? PropertyListEncoder().encode(self.gym), forKey:"trainings") } } struct Gym:Identifiable,Codable { var id: Int var Menu:String var Weight:Int var Kaisu:Int var Setsu:Int var Date:Date init(id:Int,Menu:String,Weight:Int,Kaisu:Int,Setsu:Int,Date:Date) { self.id = id self.Menu = Menu self.Weight = Weight self.Kaisu = Kaisu self.Setsu = Setsu self.Date = Date } }
参考:
https://stackoverflow.com/questions/44876420/save-struct-to-userdefaults/45909055#45909055