如何在 SwiftUI 中将 Stepper 数据保存到 UserDefaults?
Posted
技术标签:
【中文标题】如何在 SwiftUI 中将 Stepper 数据保存到 UserDefaults?【英文标题】:How to save a Stepper data to UserDefaults in SwiftUI? 【发布时间】:2022-01-18 18:38:35 【问题描述】: struct Test
@State private var steps = UserDefaults.standard.integer(forKey: "steps")
didSet
steps = UserDefaults.standard.integer(forKey: "steps")
var body: some View
Stepper("Go up or down: \(steps)", value: $steps)
.onChange(of: steps) newValue in
UserDefaults.standard.set(newValue, forKey: "steps")
将didSet
与绑定值一起使用不会调用 didSet 方法。由于价值正在改变,不应该调用它吗?因此,在从导航视图来回推送此视图后,我无法保存和显示保存的值。我应该如何解决这个问题?
【问题讨论】:
使用AppStorage
。这是一个例子***.com/a/62810288/12299030。
【参考方案1】:
简要说明:Asperi的回答@ ***.com/a/62810288/12299030)
使用@AppStorage
而不是UserDefaults
,它会在值更改时自动重新调用视图的主体属性。也就是说,这个包装器有效地监视 UserDefaults 中的一个键,并且如果该键发生更改,它将刷新您的 UI。非常适合 Binding
值。
struct Test
@AppStorage("steps") var steps = 0
var body: some View
Stepper("Go up or down: \(steps)", value: $steps)
【讨论】:
以上是关于如何在 SwiftUI 中将 Stepper 数据保存到 UserDefaults?的主要内容,如果未能解决你的问题,请参考以下文章
在 SwiftUI 中更新 CoreData 时更新状态变量
如何在 SwiftUI 中将 Firebase 结果转换为 List