StateObject 属性 不更新视图但 ObservedObject 会

StateObject property doesn't update view but ObservedObject does

我正在将数据保存到我使用 @EnvironmentObject var modelData : DBViewModel 的另一个视图中的领域数据库 并在此视图中加载它们

struct SelectedSinsList: View {
@StateObject var modelData = DBViewModel() //@ObservedObject works, as it always recreates the List when I open this view and values are updated
var body: some View {
    NavigationView {
        ScrollView{
            VStack(spacing: 15){
                ForEach(modelData.sins){sin in //..........

该行为表明您的视图使用新数据更新的唯一原因是父视图正在重绘,从而触发“无主”观察对象被重建。

State 和 StateObject 比 View 结构体的失效和重绘持续时间更长。要使用它们,您需要通过调用 self.objectWillChange.send()

将 StateObject 中的回调或发布者连接到其 objectWillChange 发布者

但是如果那个 DBViewModel 已经是一个环境对象,为什么要重新创建它?