通过 AppStorage 跨 SwiftUI 中的类加载字符串

问题描述

我正在尝试通过 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
}