Swiftui 当主机应用程序关闭时,如何在Intent Handler中重新加载从coredata获取数据?
我目前正在使用SwiftUI开发一个应用程序 我想在每次关闭主机应用程序时,从IntentHandler中的CoreData重新加载数据,以更新更新更新的数据 对于Swiftui 当主机应用程序关闭时,如何在Intent Handler中重新加载从coredata获取数据?,swiftui,widgetkit,intents-extension,Swiftui,Widgetkit,Intents Extension,我目前正在使用SwiftUI开发一个应用程序 我想在每次关闭主机应用程序时,从IntentHandler中的CoreData重新加载数据,以更新更新更新的数据 对于Widget,我们可以使用WidgetCenter.shared.reloadalltimeline()进行更新,但是对于IntentHandler,我们如何更新数据呢 在我的代码中,小部件中编辑视图列表中的数据仅在主机应用程序首次启动时接收数据 代码如下: TimerApp.swift(主机应用程序) IntentHandler.
Widget
,我们可以使用WidgetCenter.shared.reloadalltimeline()
进行更新,但是对于IntentHandler
,我们如何更新数据呢
在我的代码中,小部件中编辑视图列表中的数据仅在主机应用程序首次启动时接收数据
代码如下: TimerApp.swift(主机应用程序) IntentHandler.swift(intentExtension)
导入WidgetKit
导入快捷键
导入CoreData
进口意向
类IntentHandler:不精确、配置增强{
var moc=PersistenceController.shared.managedObjectContext
var TimeRenty:TimeRenty?
func ProvideNameOptionCollection(用于intent:configurationcontent,searchTerm:String?,完成:@escaping(INObjectCollection?,Error?)->Void){
let request=NSFetchRequest(entityName:“TimeRenty”)
做{
let result=尝试moc.fetch(请求)
timerenty=result.first
}
将let错误捕获为NSError{
打印(“无法获取.\(错误.userInfo)”)
}
让nameIdentifiers:[NSString]=[
NSString(字符串:timerenty?.task???),
]
让allNameIdentifiers=INObjectCollection(项:nameIdentifiers)
完成(allNameIdentifiers,无)
}
重写func处理程序(用于intent:INIntent)->Any{
回归自我
}
}
Xcode:12.0.1版 iOS:14.0 生命周期:SwiftUI应用程序
import SwiftUI
import WidgetKit
@main
struct TimerApp: App {
@Environment(\.scenePhase) private var scenePhase
let persistenceController = PersistenceController.shared.managedObjectContext
var body: some Scene {
WindowGroup {
ContentView()
.environment(\.managedObjectContext, persistenceController)
.onChange(of: scenePhase) { newScenePhase in
if newScenePhase == .inactive {
// I want to update a data in IntentHandler here
}
}
}
}
}
import WidgetKit
import SwiftUI
import CoreData
import Intents
class IntentHandler: INExtension, ConfigurationIntentHandling {
var moc = PersistenceController.shared.managedObjectContext
var timerEntity:TimerEntity?
func provideNameOptionsCollection(for intent: ConfigurationIntent, searchTerm: String?, with completion: @escaping (INObjectCollection<NSString>?, Error?) -> Void) {
let request = NSFetchRequest<TimerEntity>(entityName: "TimerEntity")
do{
let result = try moc.fetch(request)
timerEntity = result.first
}
catch let error as NSError{
print("Could not fetch.\(error.userInfo)")
}
let nameIdentifiers:[NSString] = [
NSString(string: timerEntity?.task ?? ""),
]
let allNameIdentifiers = INObjectCollection(items: nameIdentifiers)
completion(allNameIdentifiers,nil)
}
override func handler(for intent: INIntent) -> Any {
return self
}
}