我知道如何使用@EnvironmentObject使全局数据对任何视图类可用,但我找不到将变量传递给非视图类的方法。
我的情况似乎是一个普遍问题:
1. 登录,返回访问令牌。此令牌需要在所有后续api调用中使用 2. 将访问令牌存储在UserSettings类中 3. 将UserSettings放置在环境桶中。
Categories()是一个非视图的Swift类,用于检索数据,但需要访问令牌,该令牌存储在UserSettings中。
我的情况似乎是一个普遍问题:
1. 登录,返回访问令牌。此令牌需要在所有后续api调用中使用 2. 将访问令牌存储在UserSettings类中 3. 将UserSettings放置在环境桶中。
let contentView = ContentView()
.environmentObject(UserSettings())
- 每个视图将根据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 {
...
}
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 类中,我该如何访问这个令牌?是否有其他方法来存储/访问这些数据?