如何解决在 observableObject 中更改了 swift ui 句柄属性
所以 - 我在屏幕上有一个文本字段 - 数据异步加载 - 所以我创建了 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) }
}
而且我找不到任何方法。我谷歌搜索的所有内容都会在视图中放置一个接收器或一些保存调用 - 这对我来说似乎完全错误......如果我在一个地方阅读它,我想把它写在同一个地方 - 例如,如果我已经将变量绑定到文本字段,并且绑定是双向的,那么已经建立了足够的连接
那我做错了什么?如何对设置的值做出反应,在我的“模型”对象中,而不显式地将某种保存或其他操作放入视图中?
解决方法
所以我找到了我想要的解决方案 - 来自模型的绑定 -> 文本字段总是有效,但是来自文本字段 -> 模型的值我无法工作。神奇的似乎是这个关键字“willSet”
@Published var value : Double? = nil {
willSet( new_value ) {
print("going to save asynchronously now")
}}
神奇地工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。