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 リリースでも機能し続けると期待できますか?