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()
}
这个问题让我抓狂:我有一个小型的 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()
}