Я хочу, чтобы оба делегата имели доступ к моему экземпляру клиента. В настоящее время AppDelegate создает экземпляр client как свое свойство, а затем он передается на сцену как environmentObject:
Код: Выделить всё
import SwiftUI
@main
struct app1App: App {
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
var body: some Scene {
WindowGroup {
MainView().environmentObject(appDelegate.client)
}
}
}
class AppDelegate: NSObject, UIApplicationDelegate {
let client : Client = Client()
// other Notifications related functions
}
Код: Выделить всё
@EnvironmentObject var client: Client
Код: Выделить всё
class SceneDelegate: NSObject, UIWindowSceneDelegate {
@EnvironmentObject var client: Client
func sceneWillEnterForeground(_ scene: UIScene) {
self.client.disconnect() // This fails in runtime!!!
}
}
Код: Выделить всё
Thread 1: Fatal error: No ObservableObject of type Client found. A View.environmentObject(_:) for Client may be missing as an ancestor of this view.
Подробнее здесь: https://stackoverflow.com/questions/728 ... nedelegate
Мобильная версия