删除coredata子实体后如何通知Swiftui刷新视图
时间: 2024-02-12 07:04:47 浏览: 24
要通知SwiftUI刷新视图,可以使用 `@FetchRequest` 属性包装器和 `NSManagedObjectContext` 的 `objectWillChange` 发送通知实现。
首先,确保在您的 `NSManagedObjectContext` 上启用 `objectWillChange` 通知,这样您就可以在更改后手动调用它:
```swift
managedObjectContext.objectWillChange.send()
```
然后,在您的视图中,使用 `@FetchRequest` 属性包装器来获取您的数据并将其绑定到视图:
```swift
@FetchRequest(entity: Parent.entity(), sortDescriptors: []) var parents: FetchedResults<Parent>
```
当您删除子实体时,您需要手动调用 `objectWillChange`,以便 `@FetchRequest` 属性包装器可以检测到更改并自动刷新视图:
```swift
func deleteChild(_ child: Child) {
parent.removeFromChildren(child)
managedObjectContext.delete(child)
managedObjectContext.objectWillChange.send() // 这里手动调用 objectWillChange
}
```
这将导致 `@FetchRequest` 属性包装器重新查询数据并更新视图。