gpt4 book ai didi

core-data - @Binding - 将 FetchedResults、单个实体传递给 Core Data + SwiftUI 中的 subview

转载 作者:行者123 更新时间:2023-12-03 08:24:39 28 4
gpt4 key购买 nike

我只想将一个绑定(bind)传递到一个核心数据 - 实体到 ForEach 循环内的 SwiftUI SubView 屏幕,这样我就可以编辑该实体的属性,我可以保存我的上下文并获取自动更新的 View ..

我怎样才能实现这样的目标:

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),
...
}
}

最佳答案

您需要设置一个@ObservedObject var item:ToDo。您的 CoreData 实体是一个符合 ObservableObject 的类,并且当其中的任何属性发生更改时将强制 View 更新。

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

您现在可以进行任何所需的更改,并在需要时保存上下文

关于core-data - @Binding - 将 FetchedResults、单个实体传递给 Core Data + SwiftUI 中的 subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66922804/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com