iOS14.5 小部件数据不是最新的
iOS14.5 Widget data not up-to-date
我使用以下代码来更新我的小部件的时间线,但是我从核心数据中获取的“结果”不是最新的。
我的逻辑是当检测到主机应用程序进入后台时,我调用“WidgetCenter.shared.reloadAllTimelines()”并在“getTimeline”函数中获取核心数据。打印出结果后,是旧数据。另外我在.background下用相同的predicate取数据,数据是最新的。
另外,我在小部件视图主体中显示日期,当我关闭主机应用程序时,日期正在刷新。意味着上层刷新逻辑工作正常。但总是获取旧数据。
有人可以帮我吗?
func getTimeline(in context: Context, completion: @escaping (Timeline<Entry>) -> ()) {
var entries: [SimpleEntry] = []
let now = Date()
let newRequest = coreDataManager.fetchRequestForTimeline(date: now)
let result = try? viewContext.fetch(newRequest)
print(result!)
print("new####")
entries.append(SimpleEntry(date: now, tasks: result))
let timeline = Timeline(entries: entries, policy: .never)
completion(timeline)
}
这是主机应用中的代码
case .background:
WidgetCenter.shared.reloadAllTimelines()
// fetch here
print("App is in background")
更新:
我在获取之前添加了以下代码来刷新核心数据。一切都按预期工作。
// refresh the core data
try? viewContext.setQueryGenerationFrom(.current)
viewContext.refreshAllObjects()
更新:
我在获取之前添加了以下代码来刷新核心数据。一切都按预期工作。
// refresh the core data
try? viewContext.setQueryGenerationFrom(.current)
viewContext.refreshAllObjects()
我使用以下代码来更新我的小部件的时间线,但是我从核心数据中获取的“结果”不是最新的。
我的逻辑是当检测到主机应用程序进入后台时,我调用“WidgetCenter.shared.reloadAllTimelines()”并在“getTimeline”函数中获取核心数据。打印出结果后,是旧数据。另外我在.background下用相同的predicate取数据,数据是最新的。
另外,我在小部件视图主体中显示日期,当我关闭主机应用程序时,日期正在刷新。意味着上层刷新逻辑工作正常。但总是获取旧数据。
有人可以帮我吗?
func getTimeline(in context: Context, completion: @escaping (Timeline<Entry>) -> ()) {
var entries: [SimpleEntry] = []
let now = Date()
let newRequest = coreDataManager.fetchRequestForTimeline(date: now)
let result = try? viewContext.fetch(newRequest)
print(result!)
print("new####")
entries.append(SimpleEntry(date: now, tasks: result))
let timeline = Timeline(entries: entries, policy: .never)
completion(timeline)
}
这是主机应用中的代码
case .background:
WidgetCenter.shared.reloadAllTimelines()
// fetch here
print("App is in background")
更新:
我在获取之前添加了以下代码来刷新核心数据。一切都按预期工作。
// refresh the core data
try? viewContext.setQueryGenerationFrom(.current)
viewContext.refreshAllObjects()
更新:
我在获取之前添加了以下代码来刷新核心数据。一切都按预期工作。
// refresh the core data
try? viewContext.setQueryGenerationFrom(.current)
viewContext.refreshAllObjects()