Ich versuche, einen benutzerdefinierten Eigenschaften-Wrapper zu erstellen, der von SwiftUI unterstützt wird. Dies bedeutet, dass Änderungen an den entsprechenden Eigenschaftenwerten eine Aktualisierung der SwiftUI-Ansicht bewirken würden. Hier ist eine vereinfachte Version von dem, was ich habe:
@propertyWrapper
public struct Foo: DynamicProperty {
@ObservedObject var observed: SomeObservedObject
public var wrappedValue: [SomeValue] {
return observed.value
}
}
Ich sehe, dass ObservedObject
SwiftUI die Änderungen auch dann abfängt , wenn meine in meinem benutzerdefinierten Eigenschafts-Wrapper enthalten ist, SomeObservedObject
solange:
- Mein Property Wrapper ist eine Struktur
- Mein Property Wrapper entspricht
DynamicProperty
Leider sind die Dokumente spärlich und es fällt mir schwer zu sagen, ob dies nur mit der aktuellen SwiftUI-Implementierung aus Glück funktioniert.
Die Dokumente von DynamicProperty
(innerhalb von Xcode, nicht online) scheinen darauf hinzuweisen, dass eine solche Eigenschaft eine Eigenschaft ist, die von außen geändert wird, wodurch die Ansicht neu gezeichnet wird. Es gibt jedoch keine Garantie dafür, was passiert, wenn Sie Ihre eigenen Typen an dieses Protokoll anpassen.
Kann ich davon ausgehen, dass dies auch in zukünftigen SwiftUI-Versionen funktioniert?