use*_*957 2 binding core-data swiftui
我只想将到 Core Data - Entity 的绑定传递到带有绑定的 ForEach 循环内的 SwiftUI SubView 屏幕,这样我就可以编辑该实体的属性,我可以保存我的上下文并获取自动更新的视图。
我怎样才能实现这样的目标:
ContentView {
@Environment(\.managedObjectContext) private var viewContext
@FetchRequest(entity:ToDo.entity(), sortDescriptors: [])
private var toDoItems: FetchedResults<ToDo>
... the following part is what I need:
ForEach(toDoItems) { (item:ToDo) in
NavigationLink(
destination: MyEditView($item),
...
}
}
Run Code Online (Sandbox Code Playgroud)
您需要设置一个@ObservedObject var item: ToDo
. 您的 CoreData 实体是一个类,它符合ObservableObject
并在其中的任何属性发生更改时强制视图更新。
struct NextView: View {
@Environment(\.managedObjectContext) var managedObjectContext
@ObservedObject var item: ToDo
var body: some View {
Button(action: {
item.name = "New value"
if managedObjectContext.hasChanges {
do {
try self.managedObjectContext.save()
print("SAVED CONTEXT")
} catch let error {
print("Error: SAVING CONTEXT \(error), \(error.localizedDescription)")
}
}, label: {
Text("\(item.name)")
})
}
}
Run Code Online (Sandbox Code Playgroud)
您现在可以进行任何所需的更改并在需要时保存上下文
归档时间: |
|
查看次数: |
1514 次 |
最近记录: |