【发布时间】:2022-03-06 07:25:15
【问题描述】:
我有一个 StateObject,我需要使用 Settings 中的属性对其进行初始化:
@State private var settingsStore = SettingsStore()
@StateObject var matrix = Matrix(d: settingsStore.d)
我该怎么做?我不能让它成为一个计算属性,因为它是一个状态对象
【问题讨论】:
我有一个 StateObject,我需要使用 Settings 中的属性对其进行初始化:
@State private var settingsStore = SettingsStore()
@StateObject var matrix = Matrix(d: settingsStore.d)
我该怎么做?我不能让它成为一个计算属性,因为它是一个状态对象
【问题讨论】:
我相信您正在尝试在 View 中使用这些属性。
要解决您的问题,您可以简单地将代码拆分为两个不同的视图,在第一个视图中定义 SettingsStore 实例,然后使用它来初始化第二个视图的 Matrix 实例。
像这样:
struct FirstView: View {
@State private var settingsStore = SettingsStore()
var body: some View {
SubView(settingsStore: $settingsStore, matrix: Matrix(d: settingsStore.d))
}
}
struct SubView: View {
@Binding var settingsStore: SettingsStore
@StateObject var matrix: Matrix
var body: some View {
Text(matrix.d)
}
}
【讨论】: