這個問題讓我抓狂:我有一個小型 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 中的代碼永遠不會被呼叫......而且我在這里或其他地方都找不到任何關于它的東西。任何人有任何提示?
謝謝, 安德烈亞斯
uj5u.com熱心網友回復:
未hasChanges發布的屬性,所以它不會觸發onChange,嘗試直接使用通知,比如
.onReceive(NotificationCenter.default.publisher(for: NSManagedObjectContext.didChangeObjectsNotification,
object: viewContext)) { _ in
nrOfItems = persistanceController.getRecordsCount()
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/477706.html
