Почему передача модели представления как универсальной работает с протоколом, но вывод типа не работает для ObservedObje ⇐ IOS
Почему передача модели представления как универсальной работает с протоколом, но вывод типа не работает для ObservedObje
Итак, у меня есть модель представления, соответствующая протоколу SwiftUI, и я не понимаю, почему следующий вариант не работает, а другой вариант работает.
протокол SummaryViewModelProtocol: ObservableObject { var textValueString: String {получить установку} } класс SummaryViewModel: SummaryViewModelProtocol { частные отменяемые переменные: Set = [] @Published частная переменная textValuePublisher: String = "" вар textValueString: String = "" в этом() { настройкаПодписчики() } } структура ContentView: Просмотр { @ObservedObject var viewModel: SummaryViewModelProtocol = SummaryViewModel() var body: some View { ВСтек { Текст(viewModel.textValueSring) } .padding() .onAppear { представлениеМодель.loadData() } } } Когда он у меня есть, я получаю сообщение об ошибке: Тип «any SummaryViewModelProtocol» не может соответствовать «ObservableObject»
но если мое представление использует дженерики, то у меня нет следующей ошибки?
struct ContentViewNoError: Просмотр, где Модель: SummaryViewModelProtocol { @ObservedObject var viewModel: Модель инициализация (viewModel: Модель) { self.viewModel = модель просмотра } var body: some View { Текст (viewModel.textValueString) } }
Итак, у меня есть модель представления, соответствующая протоколу SwiftUI, и я не понимаю, почему следующий вариант не работает, а другой вариант работает.
протокол SummaryViewModelProtocol: ObservableObject { var textValueString: String {получить установку} } класс SummaryViewModel: SummaryViewModelProtocol { частные отменяемые переменные: Set = [] @Published частная переменная textValuePublisher: String = "" вар textValueString: String = "" в этом() { настройкаПодписчики() } } структура ContentView: Просмотр { @ObservedObject var viewModel: SummaryViewModelProtocol = SummaryViewModel() var body: some View { ВСтек { Текст(viewModel.textValueSring) } .padding() .onAppear { представлениеМодель.loadData() } } } Когда он у меня есть, я получаю сообщение об ошибке: Тип «any SummaryViewModelProtocol» не может соответствовать «ObservableObject»
но если мое представление использует дженерики, то у меня нет следующей ошибки?
struct ContentViewNoError: Просмотр, где Модель: SummaryViewModelProtocol { @ObservedObject var viewModel: Модель инициализация (viewModel: Модель) { self.viewModel = модель просмотра } var body: some View { Текст (viewModel.textValueString) } }
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение