[英]SwiftUI: Update Tab Bar Badge when Core Data item is added
This Problem drives me nuts: I have a small SwiftUi iOS App which works with Core data.这个问题让我抓狂:我有一个小型 SwiftUi iOS 应用程序,它可以处理核心数据。 All works fine, I can add edit etc. But the app is tab bar based ad I want one tabs badge updated when a record is added to core data.
一切正常,我可以添加编辑等。但是该应用程序是基于标签栏的广告,我希望在将记录添加到核心数据时更新一个标签徽章。
So I thought I listen to the viewontext.hasChanged bool:所以我想我听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()
})
}
}
But the code in onChange is never called ... and I can't find anything about it neither here nor somewhere else.但是 onChange 中的代码永远不会被调用......而且我在这里或其他地方都找不到任何关于它的东西。 Anyone any hints?
任何人有任何提示?
Thanks, Andreas谢谢, 安德烈亚斯
The hasChanges
is not published property, so it does not trigger onChange
, try instead to use notification directly, like hasChanges
没有发布属性,所以它不会触发onChange
,尝试直接使用通知,比如
.onReceive(NotificationCenter.default.publisher(for: NSManagedObjectContext.didChangeObjectsNotification,
object: viewContext)) { _ in
nrOfItems = persistanceController.getRecordsCount()
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.