我这样使用 @EnvironmentObject
:
struct MyView: View {
@EnvironmentObject var object: MyObject
...
}
但我的代码不需要object
有一个值。
仅仅将其设为可选是行不通的(甚至无法编译 - 属性类型 'MyObject?' 与其包装类型 'EnvironmentObject' 的 'wrappedValue' 属性不匹配
)。
你也不能传入一个默认对象(这也可以解决我的问题) - 无论是作为属性的初始值,还是作为@EnvironmentObject
的参数。例如这些都不行:
@EnvironmentObject var object: MyObject = MyObject()
@EnvironmentObject(MyObject()) var object: MyObject
我试图在我的自定义属性包装器中包装@EnvironmentObject
,但根本不起作用。
我还尝试包装对该对象属性的访问,但它不会抛出可以捕获的异常,而是抛出fatalError
。
我是否遗漏了什么,或者我只是在尝试不可能的事情?
@EnvironmentObject
呢?为什么不直接使用@ObservedObject
,它可以有默认实例并且是可选的呢? - Asperi