-1

我正在尝试通过 AppStrorage 在 SwiftUI 中保存字符串,这到目前为止有效,但我也希望能够在另一个类中访问和加载这个保存的数据。

如果有人可以帮助我,我会很高兴。

谢谢

4

2 回答 2

1

AppStorageUserDefaults在幕后使用。因此,您应该能够以这种方式直接在非 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商店中传递使用。因此,例如,如果您想使用在应用程序组之间共享的一个,您可以在创建包装器时将其传入,然后在您的类中使用相同的组实例,您就可以访问数据您的应用程序以及您的应用程序扩展。

于 2020-12-29T19:01:08.797 回答
0

只需使用具有相同密钥的包装器,它只是引用相同的UserDefaults存储

struct OneFileView: View {
  @AppStorage("someKey") var someKey: String
  
  // ... other code
}

struct AnotherFileView: View {
  @AppStorage("someKey") var someKey: String
  
  // ... other code
}
于 2020-12-29T19:29:56.253 回答