我想使用 applicationWillTerminate 功能在应用关闭之前保存一些用户默认设置。我要保存的数据存储在 EnvironmentObject 中。
如何从 AppDelegate 类访问它?
答案 0 :(得分:2)
如果有人需要此答案的代码示例。
1。创建符合ObservableObject的类
class Test: ObservableObject{ }
2。在AppDelegate.Swift中声明var myVar = Test()
class AppDelegate: UIResponder, UIApplicationDelegate {
var myVar = Test()
//****
}
3。在SceneDelegate.swift中的“如果让windowScene =场景为UIUIScene {”中,更改代码如下:
if let windowScene = scene as? UIWindowScene {
let myVar = (UIApplication.shared.delegate as! AppDelegate).myVar
window.rootViewController = UIHostingController(rootView: contentView.environmentObject(myVar))
self.window = window
window.makeKeyAndVisible()
}
答案 1 :(得分:1)
@EnvironmentObject
不需要直接在您的SwiftUI对象中实例化;而是可以将其分配到其他位置(例如,UISceneDelegate),然后使用.environment(…)
函数进行传递。
您还可以在AppDelegate上分配它,然后通过UISceneDelegate.scene(_:willConectTo:options:)
方法将该对象传递给您的视图。