英文:
Subscribing to changes to @Published
问题
我正在尝试将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
属性更改的任何信息。
英文:
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)
}
...
}
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.
答案1
得分: 6
我会使用以下方法:
class DataSet: ObservableObject {
@Published var query: String = ""
private var subscribers = Set<AnyCancellable>()
init() {
self.$query
.sink { newQuery in
// 在这里处理newQuery
}
.store(in: &subscribers)
}
}
英文:
I would use the following approach
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)
}
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论