【发布时间】:2020-09-08 11:08:25
【问题描述】:
我目前正在使用 SwiftUI 开发应用程序。
我想在此应用中使用 UserDefaults 值。 所以我在下面做了一个代码。
但在这种情况下,当我重新启动应用程序时(以下进程中的第 4 个进程),我无法从 UserDefaults 中获取值...
-
构建并运行此项目。
-
按下主页按钮,应用程序进入后台。
-
双击主页按钮并移除应用屏幕。
-
按下应用程序图标并重新启动应用程序。然后我想从 UserDefaults 中获取价值。
要解决这个问题,我应该如何在 UserDefaults 中设置和获取值?
代码如下:
import SwiftUI
struct ContentView: View {
@State var text = "initialText"
var body: some View {
VStack {
Text(text)
TextField( "", text: $text)
}.onAppear(){
if let text = UserDefaults.standard.object(forKey: "text" ){
self.text = text as! String
}
}
.onDisappear(){
UserDefaults.standard.set(self.text, forKey: "text")
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
添加
当我在第一个答案之后添加这个类时,该代码有几个这样的错误,这是常见的吗?
Xcode:版本 11.7
斯威夫特:斯威夫特 5
【问题讨论】:
-
你的 iOS 版本目标是什么?也许值得一提的是,如果您准备等待 Xcode 12 和 iOS 14 的发布,您可以使用 SwiftUI @AppStorage 属性包装器 - 非常易于使用并且只需要很少的代码。
-
@andrewbuilder,感谢您的评论,本项目的目标是 ios 13.7