订阅 @Published 的更改

vas*_*ily 6 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)
}

...
}
Run Code Online (Sandbox Code Playgroud)

当用户更改 的值时,query我想过滤我的ObservedObject. 然而,我在文档中找不到如何订阅query属性更改的任何地方。

Asp*_*eri 9

我会使用以下方法

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)
    }
}
Run Code Online (Sandbox Code Playgroud)