Próbuję utworzyć niestandardowe opakowanie właściwości obsługiwane przez SwiftUI, co oznacza, że zmiany w odpowiednich wartościach właściwości spowodowałyby aktualizację widoku SwiftUI. Oto uproszczona wersja tego, co mam:
@propertyWrapper
public struct Foo: DynamicProperty {
@ObservedObject var observed: SomeObservedObject
public var wrappedValue: [SomeValue] {
return observed.value
}
}
Widzę, że nawet jeśli moja ObservedObject
zawartość jest zawarta w opakowaniu właściwości niestandardowej, SwiftUI nadal przechwytuje zmiany SomeObservedObject
tak długo, jak:
- Moje opakowanie właściwości jest strukturą
- Moje opakowanie właściwości jest zgodne z
DynamicProperty
Niestety dokumenty są rzadkie i trudno mi powiedzieć, czy przy obecnej implementacji SwiftUI działa to tylko pechowo.
Dokumenty z DynamicProperty
(w Xcode, nie online) wydają się wskazywać, że taka właściwość jest zmieniona z zewnątrz, powodując przerysowanie widoku, ale nie ma gwarancji, co się stanie, gdy dostosujesz własne typy do tego protokołu.
Czy mogę oczekiwać, że nadal będzie działać w przyszłych wersjach SwiftUI?