SwiftUI:添加核心数据项时更新选项卡栏徽章

SwiftUI: Update Tab Bar Badge when Core Data item is added

这个问题让我抓狂:我有一个小型的 SwiftUi iOS 应用程序可以处理核心数据。一切正常,我可以添加编辑等。但是该应用程序是基于标签栏的广告,我希望在将记录添加到核心数据时更新一个标签徽章。

所以我想我听了 viewontext.hasChanged bool:

struct MainView: View {
   @Environment(\.managedObjectContext) private var viewContext
   @State var nrOfItems = 0
   let persistanceController : PersistenceController

   var body: some View {
      TabView{
         ItemListView(persistance: PersistenceController.shared)
            .tabItem{
               Label("Lebensmittel",systemImage: "cart")
            }
            .badge(nrOfItems)
      }
      .onChange(of: viewContext.hasChanges, perform: {newValue in
         nrOfItems = persistanceController.getRecordsCount()
      })
   }
}

但是永远不会调用 onChange 中的代码......而且我在这里和其他地方都找不到任何关于它的信息。有人有任何提示吗?

谢谢,安德烈亚斯

hasChanges未发布属性,因此不会触发onChange,请尝试直接使用通知,例如


.onReceive(NotificationCenter.default.publisher(for: NSManagedObjectContext.didChangeObjectsNotification, 
                                             object: viewContext)) { _ in
  nrOfItems = persistanceController.getRecordsCount()

}