Вам не нужно заставлять любой SwiftUI View соответствовать ObservableObject
. Подойдет простое свойство привязки, так как оно будет передавать любые релевантные данные обратно по цепочке.
Кроме того, типы Swift struct
не могут соответствовать ObservableObject
согласно декларации протокола:
protocol ObservableObject : AnyObject
AnyObject
- это class
или ссылочный тип. Можно использовать что-то вроде ObservableObject
для прослушивания модели представления, хранилища данных или тому подобного. Чтобы передать данные в цепочку представлений из представления SwiftUI, используйте вместо этого @Binding
.
Вы просто назначите привязку text
, когда придет новое значение.
Затем изbody
вызывающего представления, вы можете создать его экземпляр, передав ему связываемое свойство (например, @State
с использованием префикса $
или пользовательское свойство Binding
).
var body: some View {
SampleView(text: $model.text)
}
SwiftUIобрабатывает все остальное за вас!
Документация по ObservableObject