问题描述
我正在尝试通过 AppStrorage 在 SwiftUI 中保存字符串,到目前为止,这有效,但我也希望能够在另一个类中访问和加载此保存的数据。
如果有人能帮助我,我会很高兴。
谢谢
解决方法
AppStorage
在幕后使用 UserDefaults
。因此,您应该能够以这种方式直接在非 SwiftUI 上下文中访问数据。
例如,如果您使用 App Storage 存储 Bool
(如果用户执行了某些活动),则这两个应该是相同的。
struct YourView: View {
@AppStorage("UserHasOnboarded") var hasOnboarded: Bool
// View stuff
}
class SomeClass {
func checkOnboarding() {
let hasOnboarded = UserDefaults.standard.bool(forKey: "UserHasOnboarded")
// Do your stuff
}
}
使用 @AppStorage
包装器时,可以传入 UserDefaults
存储使用。因此,例如,如果您想使用在应用程序组之间共享的一个,您可以在创建包装器时将其传入,然后在您的类中使用相同的组实例,并且您将能够访问数据您的应用以及您的应用扩展程序。
只需使用具有相同键的包装器,它只是引用相同的 UserDefaults
存储
struct OneFileView: View {
@AppStorage("someKey") var someKey: String
// ... other code
}
struct AnotherFileView: View {
@AppStorage("someKey") var someKey: String
// ... other code
}