如何从标有@Observable的类访问AppDelegate

问题描述 投票:0回答:1

我有一个采用我想要重构的

ObservableObject
协议的类。该类不应采用协议,而应使用
@Observable
宏进行标记。现在我遇到了该类的属性之一的问题:
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
。使用宏时出现错误
Property wrapper cannot be applied to a computed property
。我尝试删除该属性并使用
AppDelegate
在类中需要的所有位置访问
let appDelegate = UIApplication.shared.delegate as! AppDelegate
,但这会导致崩溃。

如何从标有

AppDelegate
宏的类中访问
@Observable

ios swift swiftui
1个回答
0
投票

@UIApplicationDelegateAdaptor
只能用在一个地方,例如在
App
结构中:

struct MyApp: App {

    @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate

如果你想先在其他地方访问它,你应该符合

ObservableObject
,例如

class AppDelegate: UIResponder, ObservableObject {
    
}

然后在您的

View
模型中您可以执行以下操作:

struct ContentView {
    @EnvironmentObject var appDelegate: AppDelegate

如果您需要另一个对象中的

AppDelegate
,那么您可以在
AppDelegate
中初始化另一个对象并传入
weak self

© www.soinside.com 2019 - 2024. All rights reserved.