so-我在屏幕上有一个文本字段-数据异步加载-所以我创建了一个带有已发布字段的ObservableObject,并成功将其绑定到视图:
class Blah : ObservableObject
{
@Published var value : Double? = nil
init()
{
load_variable_async().then {result in self.value = result }
}
}
这是完美的-视图反映了变量和所有事物的价值
但是-我希望它能双向运行。发布的似乎是一个双向包装器,所以我想添加这样的东西:
init()
{
load_variable_async().then {result in self.value = result }
value.when_changed { new_value in asynchronously_save( variable) }
}
我找不到任何方法。我在谷歌上搜索的所有内容都会在视图中放入一个接收器或一些保存调用,这对我来说似乎完全错误……如果我在一个地方读它,我想在同一个地方写它——例如,如果我已经将变量绑定到一个文本字段,并且绑定双向进行,那么已经建立了足够的连接
那么我做错了什么?如何对设定的价值做出反应,在我的";型号";对象,而不显式地将某种保存或其他操作放入视图?
所以我找到了我想要的解决方案-来自模型的绑定->textfield始终有效,但textfield的值->我无法工作。神奇的似乎是这个关键词"willSet";
@Published var value : Double? = nil {
willSet( new_value ) {
print("going to save asynchronously now")
}}
神奇地工作。