需要数据来初始化一个 StateObject

Need data to initialize a StateObject

我有一个 StateObject,我需要使用设置中的属性对其进行初始化:

@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)
    }

}