订阅对@Published的更改 [英] Subscribing to changes to @Published

查看:72
本文介绍了订阅对@Published的更改的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将 query 的值绑定到位于 SwiftUI 视图中的搜索框.

I am trying to bind the value of query to a search box sitting in a SwiftUI view.

class DataSet: ObservedObject {

... 

@Published var query: String = ""

init() {
    let sub = AnySubscriber<String, Never>(
        receiveSubscription: nil,
        receiveValue: { query in
            print(query)
            return .unlimited
        })
    self.$query.subscribe(sub)
}

...
}

当用户更改 query 的值时,我想在 ObservedObject 中过滤其他一些属性.但是我在文档中找不到任何地方如何订阅对 query 属性的更改.

When the user changes the value of the query I'd like to filter some other property in my ObservedObject. Yet I cannot find anywhere in the documentation how do I subscribe to changes to query property.

推荐答案

我将使用以下方法

class DataSet: ObservableObject {

    @Published var query: String = ""

    private var subscribers = Set<AnyCancellable>()
    init() {
        self.$query
            .sink { newQuery in
                    // do something here with newQuery
            }
            .store(in: &subscribers)
    }
}

这篇关于订阅对@Published的更改的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆