Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SwiftUI:从AppDelegate访问@EnvironmentObject_Swift_Swiftui_Xcode11_Ios13 - Fatal编程技术网

SwiftUI:从AppDelegate访问@EnvironmentObject

SwiftUI:从AppDelegate访问@EnvironmentObject,swift,swiftui,xcode11,ios13,Swift,Swiftui,Xcode11,Ios13,我想使用应用程序willterminate功能在应用程序关闭前保存一些用户默认值。我要保存的数据存储在环境对象中 如何从AppDelegate类访问它?一个@EnvironmentObject不需要直接在SwiftUI对象中实例化;相反,它可以分配到其他地方(例如,您的UISceneDelegate),然后使用.environment(…)函数传递 您还可以在AppDelegate上分配该对象,并将该对象传递到UISceneDelegate.scene(u3;:willconconnectto:

我想使用应用程序willterminate功能在应用程序关闭前保存一些用户默认值。我要保存的数据存储在环境对象中


如何从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您应该将此作为答案发布,以便其格式清晰。这正是我需要的:)