如何从@StateObject内的子对象传播更改

问题描述

我有一个模型,带有一个带有条目数组的“子”模型对象。添加SubModel的数组不会更新视图。如果我在视图中初始化subModel @StateObject属性,那么一切都会按预期进行(请参见示例中的注释代码)。这是有道理的,因为视图知道要跟踪对subModel的更改。

有没有更好的方法解决这个问题?

class Model: ObservableObject {
    @Published var entries: [Entry] = []
    let subModel = SubModel()
}

class SubModel: ObservableObject {
    @Published var entries: [Entry] = []
}

struct ContentView: View {
    @StateObject var model: Model
  //  @StateObject var subModel: SubModel

    init() {
        let model = Model()
        _model = StateObject(wrappedValue: model)
   //     _subModel = StateObject(wrappedValue: model.subModel)
    }

    var body: some View {
        ScrollView(showsIndicators: false) {
            Lazyvstack {
                Button("Add") {
                    model.entries.append(Entry(name: "Test"))
                }
                ForEach(model.entries) { thing in
                    Text(thing.name)
                }
                Divider()
                Button("Add") {
                    model.subModel.entries.append(Entry(name: "Test"))
                }
                ForEach(model.subModel.entries) { thing in
                    Text(thing.name)
                }
            }
        }
    }
}

struct Entry: Identifiable {
    let name: String
    let id = UUID()
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)