删除coredata子实体后Swiftui子视图没有刷新
时间: 2023-08-08 20:05:22 浏览: 229
SWT tableEditor删除后刷新
如果你已经在CoreData中成功删除了子实体,但SwiftUI子视图没有自动刷新,则可能是因为你没有正确设置CoreData的NSManagedObjectContext监视器。
在SwiftUI子视图中,你需要使用`@FetchRequest`属性包装器来获取CoreData数据。但是,如果你没有正确设置`NSManagedObjectContext`监视器,SwiftUI不会自动刷新子视图。
要正确设置`NSManagedObjectContext`监视器,请确保在父视图中传递`NSManagedObjectContext`实例,如下所示:
```swift
struct ParentView: View {
@Environment(\.managedObjectContext) var moc
var body: some View {
ChildView().environment(\.managedObjectContext, moc)
}
}
```
在子视图中,你可以使用`@FetchRequest`属性包装器来获取CoreData数据,并确保使用正确的`NSManagedObjectContext`实例,如下所示:
```swift
struct ChildView: View {
@FetchRequest(entity: Child.entity(), sortDescriptors: []) var children: FetchedResults<Child>
var body: some View {
// Your view code here
}
}
```
通过这种方式,当你在父视图中删除子实体时,SwiftUI将自动刷新子视图,因为它已正确设置`NSManagedObjectContext`监视器。
阅读全文