У меня есть ObservableObject
со значением @Published
, как я могу определить, было ли значение изменено с помощью вида TextField
или оно было установлено напрямую (например, при нажатии Button
)?
struct ContentView: View {
@ObservedObject var model = Model()
var body: some View {
VStack {
Button("set value") {
self.model.value = "user set value"
}
TextField("value", text: $model.value)
}
}
}
class Model: ObservableObject {
@Published var value = ""
var anyCancellable: AnyCancellable?
init() {
anyCancellable = $value.sink { val in
// if changed by Button then ...
// if changed by TextField then ...
}
}
}
Мой реальный сценарий звучит так: когда пользователь изменяет значение, запрос должен быть отправлен на сервер с новым значением, но сервер также может ответить новым значением (в этом случае новым запросом). на сервер не должен отправляться), поэтому я должен различать guish между случаем, когда пользователь изменяет значение (через TextField), и случаем, когда сервер изменяет значение.