はじめに
SwiftUIでViewModelを使ったUserDefaultsを使う方法はよく見かけるのですが、簡易的にUserDefaultsを使う方法がありましたので紹介します。
あくまでの簡易的な使い方です。
今回のサンプルコード
TextFieldに文字入力が終わるとTextに入力した結果が表示されます。
今回は、文字入力が終わったタイミングでUserDefaultsに保持して、アプリ起動時にUserDefaultsから読み出します。
コード
今回は、文字入力が終わるとonCommit
内が実行されるのでそこでUserDefaultsに保存してします。
VStack{}
の後に.onAppear
が表示前に呼ばれるのでそこでUserDefaultsから値を読み出しています。
ContentView.swift
import SwiftUI
struct ContentView: View {
@State var inputText:String = ""
@State var displayText:String = ""
var body: some View {
VStack {
Text("Hello, \(self.displayText)!")
TextField("Your name", text: $inputText , onCommit: {
UserDefaults.standard.set(self.inputText, forKey: "name")
self.displayText = self.inputText
self.inputText = ""
})
.padding()
}
.onAppear {
self.displayText = "World"
guard let userdefaultText = UserDefaults.standard.value(forKey: "name") as? String else { return }
self.displayText = userdefaultText
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}