使用FetchRequest包装器,并在视图内部更改获取结果的数据。该功能在视图首次加载时起作用,该视图随所做的每个更改而更新。
问题是,如果我离开视图并再次返回,获取请求数据的更改将停止刷新视图。查看更改的唯一方法是导航并再次返回。
我正在打印获取请求,并且对数据所做的更改正在起作用,这说明了为什么如果我再次导航回去,视图将正确显示,但是当视图上的数据更改时,视图没有刷新。
这是错误还是我做错了什么?
我有一个显示所有日记的库视图,第一部分是允许添加新日记的文本字段,第二部分是可以选择在所有日记旁边打勾的所有日记的列表。
第一次添加新日记并选择它们是可行的。非常奇怪的是,如果我离开并返回,它们将停止工作。
struct LibraryView: View {
// MARK: - PROPERTIES
@Environment(\.managedObjectContext) var context
@FetchRequest(
// entity: Journal.entity(),
sortDescriptors: [NSSortDescriptor(keyPath: \Journal.name, ascending: true)],
animation: .default
) var journals: FetchedResults<Journal>
@State private var name = ""
// MARK: - INITIAL VIEW -
var body: some View {
Form {
Section(header: Text("New Journal")) {
HStack {
TextField("Name", text: $name, onCommit: {
let newJournal = Journal(context: self.context)
newJournal.name = self.name
try? self.context.save()
self.name = ""
})
Button(action: { print("ACTION") }) …Run Code Online (Sandbox Code Playgroud)