Я пытаюсь создать пользовательскую оболочку свойства, поддерживаемую 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?