User DefaultsをswiftUIで用いたいのですが、うまくデータを保存してくれません。
###状況
このコードの機能は、Flagのブール値に合わせてTextを変更するというものです。
プログラムを実行中はTextはブール値に合わせて切り替わるのですが、プログラムを再実行するとデータが保存されておらず、Falseから始まります。
#質問
以下に示すコードのどこに誤りがあるのかを教えていただきたいです。
(②の部分でうまく保存ができていないのか、①でデータを読み込めておらず、デフォルト値のfslseが格納されているのか...
なぜこのコードでうまくいかないのかが理解できません)
###問題が起きているコード
swift
1import SwiftUI 2 3struct Tester: View { 4 5 @State var Flag = UserDefaults.standard.bool(forKey: "Flag") //① 6 7 var body: some View { 8 VStack { 9 Toggle(isOn: $Flag, label: { 10 if(Flag) { 11 Text("現在の状態 = True") 12 } else { 13 Text("現在の状態 = False") 14 } 15 }).onTapGesture(perform: { 16 UserDefaults.standard.set(Flag, forKey: "Flag" 17 ) //② 18 }) 19 } 20 } 21}
また、別の方法も試してみましたが、結果は同じでした。
swift
1struct Tester: View { 2 3 @State var Flag = false 4 5 var body: some View { 6 VStack { 7 Toggle(isOn: $Flag, label: { 8 if(Flag) { 9 Text("現在の状態 = True") 10 } else { 11 Text("現在の状態 = False") 12 } 13 }).onTapGesture(perform: { 14 UserDefaults.standard.set(Flag, forKey: "Flag" 15 ) 16 }) 17 }.onAppear{ 18 self.Flag = UserDefaults.standard.bool(forKey: "Flag") 19 } 20 } 21}
回答1件
あなたの回答
tips
プレビュー