【发布时间】:2020-06-14 13:03:53
【问题描述】:
我正在尝试将可选发布者传递给我的视图的.onReceive。我不想像这样强制包装它:
let refreshPublisher: AnyPublisher<Void, Never>?
var body: some View {
Group {
...
}
.onReceive(refreshPublisher!) {...}
}
所以我传递了一个空的默认值,如下所示:
var body: some View {
Group {
...
}
.onReceive(refreshPublisher ?? Empty<Void, Never>().eraseToAnyPublisher()) {...}
}
这真的很冗长,想在 Optional 发布者上添加一个扩展,如下所示:
extension Optional where Wrapped == Publisher { // Incorrect syntax, doesn't compile
func orEmpty() -> AnyPublisher<Void, Never> { ... }
}
这样,我可以结束或者做这样的事情:
var body: some View {
Group {
...
}
.onReceive(refreshPublisher.orEmpty()) {...}
}
在非可选链中处理可选发布者是否有可能或更好的方法?
【问题讨论】: