SwiftUI 如何将全局变量传递给非视图类

4
我知道如何使用@EnvironmentObject使全局数据对任何视图类可用,但我找不到将变量传递给非视图类的方法。
我的情况似乎是一个普遍问题:
1. 登录,返回访问令牌。此令牌需要在所有后续api调用中使用 2. 将访问令牌存储在UserSettings类中 3. 将UserSettings放置在环境桶中。
    let contentView = ContentView()
        .environmentObject(UserSettings())
  1. 每个视图将根据API调用返回的数据显示数据。
struct HomeView: View {
    @EnvironmentObject var user: UserSettings  <=== ACCESS TO GLOBAL DATA
    @ObservedObject var categories = Categories()  <=== GET DATA FOR THIS VIEW

    var body: some View {
    ...
}
  • Categories()是一个非视图的Swift类,用于检索数据,但需要访问令牌,该令牌存储在UserSettings中。
  • class Categories : ObservableObject {
        @Published var allCategories = CategoriesModel()
        @EnvironmentObject var user: UserSettings  <==== CANNOT ACCESS THIS DATA!
    
        init() {
            fetchCategories(page: 0, pageSize: 20)
        }
    

    UserSettings 为空,因为该类不是视图结构体(View struct),也不像视图类的行为。由于我需要的访问令牌存储在 UserSettings 类中,我该如何访问这个令牌?是否有其他方法来存储/访问这些数据?


    请考虑以下方法 https://dev59.com/41IH5IYBdhLWcg3wfu1c#59368169 或备选方案 https://dev59.com/mVIH5IYBdhLWcg3weOYr#60605529。 - Asperi
    1个回答

    7

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接