我在用着@EnvironmentObject
像这样:
struct MyView: View {
@EnvironmentObject var object: MyObject
...
}
但我的代码不需要有值object
.
仅将其设为可选是行不通的(甚至无法编译 -Property type 'MyObject?' does not match that of the 'wrappedValue' property of its wrapper type 'EnvironmentObject'
)
您也不能传入默认对象(这也可以解决我的问题) - 要么作为属性的初始值,要么作为参数@EnvironmentObject
。 e.i.这些不起作用:
@EnvironmentObject var object: MyObject = MyObject()
@EnvironmentObject(MyObject()) var object: MyObject
我尝试过包裹@EnvironmentObject
在我自己的属性包装中,但这根本不起作用。
我也尝试过包装对对象属性的访问,但它不会抛出可以捕获的异常,而是抛出fatalError
.
我是否遗漏了什么,或者我只是在尝试不可能的事情?
这不是一个非常优雅的方法,如果 EnvironmentObject 中的任何内容发生变化(以及其他警告),它很容易就会崩溃,但是如果您在 SwiftUI 1 / Xcode 11.3.1 中打印 EnvironmentObject,您会得到:
EnvironmentObject<X>(_store: nil, _seed: 1)
那么怎么样:
extension EnvironmentObject {
var hasValue: Bool {
!String(describing: self).contains("_store: nil")
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)