订阅对@Published的更改

时间:2020-01-03 05:48:56

标签: ios swiftui combine

我试图将query的值绑定到位于SwiftUI视图中的搜索框。

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属性的更改。

1 个答案:

答案 0 :(得分:1)

我将使用以下方法

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)
    }
}