В вашем случае ContentView
не будет обновляться при изменении модели (или модели просмотра). Если вы хотите полностью скрыть модель (и, конечно, все еще обновили представление), здесь возможен подход
Примечание: я не вижу необходимости в дженериках в этом случае
struct SimplestModel {
var mItem: String = ""
}
// View Model
import SwiftUI
class Portal: ObservableObject {
@Published var name: String {
didSet {
if name != model.mItem { // avoid cycling
model.mItem = name
}
}
}
private var model: SimplestModel {
didSet {
if name != model.mItem { // avoid cycling
name = model.mItem
}
}
}
init(model: SimplestModel = SimplestModel()) {
self.model = model
self.name = model.mItem
}
}
// View
struct DemoContentView: View {
@ObservedObject var viewModel: Portal
var body: some View {
Text(viewModel.name)
}
}