
New SwiftUI - Property Wrappers-@AppStorage
まずProperty Wrappers全体のおさらいです。まとめていただいているので参考に。
@AppStorageです。これかなり便利です。key-value data を保存するものです。UserDefaultsを使う保存方法のSWiftUI版となります。
Property Wrappersを自分で定義して使うようになっていましたが、今回のアップデータで@AppStorageというのができています。ほんと便利。
使い方ですが、
で紹介されていて、試してみると。
struct ContentView: View {
@AppStorage("username") var username: String = "Anonymous"
var body: some View {
VStack {
Text("Welcome, \(username)!")
Button("Log in") {
self.username = "@twostraws"
}
}
}
}
最初表示されているコードが、
Welcome, \(username)!
で"Anonymous"が表示されています。
これを"Log in"を押すことで、"@twostraws"に変更して保存しています。
一旦終了して再度起動すると、初期値が"@twostraws"に変更になっています。
Button("Log in") {
self.username = "@twostraws"
}
の"@twostraws"部分をいろいろな名前に変えて、再起動してみましょう。保存されているのがわかります
@AppStorage("username") var username: String = "Anonymous"
"username"がkeyとなって保存されます。
self.username = "@twostraws"
これで新しく保存されます。
Text("Welcome, \(username)!")
これでに反映されて、再読み込みした場合にも保存されているので、同じ文字が表示されます。