【发布时间】:2021-05-27 21:49:56
【问题描述】:
所以 - 我在屏幕上有一个文本字段 - 数据异步加载 - 所以我创建了 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) }
}
我找不到任何方法。我在谷歌上搜索的所有内容都会在 view 中放置一个接收器或一些保存调用 - 这对我来说似乎完全错误......如果我在一个地方阅读它,我想把它写进去同一个地方 - 如果我已经将变量绑定到文本字段,并且绑定是双向的,那么已经建立了足够的连接
那我做错了什么?如何对在我的“模型”对象中设置的值做出反应,而无需将某种保存或其他操作显式放入视图中?
【问题讨论】:
-
那么,您希望视图中的文本字段在模型中发布的属性更改时更新,对吗?
-
我看不出你的第二个例子有什么问题,除了你使用了一堆像
asynchronously_save这样不清楚他们在做什么的包装器——也许他们是您遇到问题的原因是什么?你能想出一个说明问题的minimal reproducible example吗?