我正在尝试创建SwiftUI支持的自定义属性包装器,这意味着对相应属性值的更改将导致对SwiftUI视图的更新。这是我所拥有的简化版本:
@propertyWrapper
public struct Foo: DynamicProperty {
@ObservedObject var observed: SomeObservedObject
public var wrappedValue: [SomeValue] {
return observed.value
}
}
我看到,即使my ObservedObject
包含在我的自定义属性包装器中,SwiftUI仍然可以捕获更改,SomeObservedObject
只要:
- 我的属性包装器是一个结构
- 我的属性包装器符合
DynamicProperty
不幸的是,文档稀疏,我很难说这是否只能通过当前的SwiftUI实现运气。
DynamicProperty
(在Xcode中,不在在线中)的文档似乎表明这种属性是从外部更改的属性,导致视图重绘,但是无法保证将自己的类型与该协议兼容时会发生什么。
我可以期望它在以后的SwiftUI版本中继续工作吗?
4
目前尚不清楚该主题的期望是什么...最后一个问题的答案?您是否真的相信有人回答“是的,可以期待”?))
—
阿斯佩里