SwiftUI:从AppDelegate访问@EnvironmentObject
我想使用应用程序willterminate功能在应用程序关闭前保存一些用户默认值。我要保存的数据存储在环境对象中SwiftUI:从AppDelegate访问@EnvironmentObject,swift,swiftui,xcode11,ios13,Swift,Swiftui,Xcode11,Ios13,我想使用应用程序willterminate功能在应用程序关闭前保存一些用户默认值。我要保存的数据存储在环境对象中 如何从AppDelegate类访问它?一个@EnvironmentObject不需要直接在SwiftUI对象中实例化;相反,它可以分配到其他地方(例如,您的UISceneDelegate),然后使用.environment(…)函数传递 您还可以在AppDelegate上分配该对象,并将该对象传递到UISceneDelegate.scene(u3;:willconconnectto:
如何从AppDelegate类访问它?一个
@EnvironmentObject
不需要直接在SwiftUI对象中实例化;相反,它可以分配到其他地方(例如,您的UISceneDelegate),然后使用.environment(…)
函数传递
您还可以在AppDelegate上分配该对象,并将该对象传递到UISceneDelegate.scene(u3;:willconconnectto:options:)
方法中的视图
Paul Hudson在中对所有这些都有很好的描述,以防有人需要这个答案的代码示例 1.创建符合ObserveObject的类
类测试:ObservableObject{}
2.在AppDelegate.Swift中声明var myVar=Test()
class AppDelegate:UIResponder、UIApplicationLegate{
var myVar=Test()
//****
}
3.在SceneDelegate.swift中的“如果让windowScene=场景为?UIWindowScene{”更改代码如下:
如果让windowScene=场景为?UIWindowScene{
让myVar=(UIApplication.shared.delegate为!AppDelegate).myVar
window.rootViewController=UIHostingController(rootView:contentView.environmentObject(myVar))
self.window=window
window.makeKeyAndVisible()的
}
如果有人需要此答案的代码示例,您应该在此()上抛出[SwiftUI]标记。类测试:ObserveObject{}------在appdelegate中:类appdelegate:UIResponder,UIApplicationDelegate{var myVar=Test()}------在SceneDelegate中:let window=UIWindow(windowScene:windowScene)让myVar=(UIApplication.shared.delegate as!AppDelegate)。myVar window.rootViewController=UIHostingController(rootView:contentView.environmentObject(myVar))@Nalov您应该将此作为答案发布,以便其格式清晰。这正是我需要的:)