SwiftUI 与表单中的 CoreData 绑定

问题描述 投票:0回答:1

我有一个具有多个属性的核心数据模型和一个用于编辑所有这些属性的表单。
我希望“自动保存”更改。因此,一旦我更改表单中的某些内容,它就会保存到我的核心数据上下文中。

我发现自己做了很多自定义绑定来保存更改时的上下文,例如:

TextField("My string", 
  text: Binding(
    get: {
        model.myString
    }, 
    set: { newValue in
        model.myString = newValue
        try? context.save()
    }
  )
)

我想简化我的代码,并有一个特殊的绑定绑定到核心数据上下文以避免这个样板文件。我怎样才能简化这个?

forms swiftui core-data binding
1个回答
0
投票

如果你有

@Environment(\.managedObjectContext) var context
@ObservedObject var model: SomeType

在视图顶部

你可以使用

 .task(id: model.hasChanges) {
      guard model.hasChanges else {return}

       try? context.save()

   
  }

只要有变化就会保存。

您可以将其放入 ViewModifier 中,以便在您想要自动保存的任何地方轻松访问。

© www.soinside.com 2019 - 2024. All rights reserved.