微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 observableObject 中更改了 swift ui 句柄属性

如何解决在 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?