我有一个在主机应用程序和今天扩展之间共享的NSManagedObject调用Event。(在 Target Membership 中,主应用程序和小部件都被选中)。
宿主应用程序和小部件具有相同的应用程序组标识符并共享Data Model(在目标会员中,主应用程序和小部件都被选中)。
当我在 Xcode 中启动(运行)小部件时,它会显示Event已保存在主机应用程序中的所有应用程序事件 ( )。但是,当我添加新事件时,它会出现在主机应用程序中,但不会出现在今天的小部件中。如果我重新启动小部件,则会显示所有事件,包括之前未显示的最后一个事件。
这是获取事件的方法。它是在TodayViewController小部件中定义的。
private func fetchEvents(date: Date) {
let predicates = NSCompoundPredicate(andPredicateWithSubpredicates: [
NSPredicate(format: "date = %@",Date().startOfDay as CVarArg),
NSPredicate(format: "startTime >= %@", Date() as CVarArg)
])
if let ev = try? TPEvent.fetchAll(predicates: predicates, in: persistentManager.context) {
events = ev
}
}
Run Code Online (Sandbox Code Playgroud)
此事件在viewWillAppear和 中调用widgetPerformUpdate。
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
fetchEvents(date: Date())
self.tableView.reloadData()
}
func widgetPerformUpdate(completionHandler: …Run Code Online (Sandbox Code Playgroud)