swift - 如何将发布者转换为 CurrentValueSubject?

标签 swift reactive-programming combine

我有一个发布者,我的 View 的 onReceive 被订阅了。我希望 onReceive 中的发布者在第一次订阅时触发,而不是在 onAppear 中重复逻辑。

有没有办法将发布者转换为 CurrentValueSubject?这是我正在尝试做的事情:

var myPublisher: CurrentValueSubject<Void, Never> {
    Just(()) // Error: Cannot convert return expression of type 'Just<()>' to return type 'CurrentValueSubject<Void, Never>'
}

这是可行的还是更好的方法?

最佳答案

您无法将发布商转换为 CurrentValueSubject随意,因为它是一种非常特殊的发布者类型。问问自己是否真的需要 myPublisher 的类型成为CurrentValueSubject<Void, Never>或者如果 AnyPublisher<Void, Never>会做。

var myPublisher: AnyPublisher <Void, Never> {
    Just(()).eraseToAnyPublisher()
}

或者,如果您只想创建一个 CurrentValueSubject 的实例有 ()作为它的初始值,你可以使用这个:

var myPublisher: CurrentValueSubject<Void, Never> {
    CurrentValueSubject<Void, Never>(())
}

关于swift - 如何将发布者转换为 CurrentValueSubject?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62372478/

相关文章:

swift - SQLite Swift中CRUD操作有几种方式?

swift - 由于信号 : Segmentation Fault: 11,Xcode 9.2 命令失败

java - 可观察以重用运算符执行

java - 如何获取导致 Flux 异常的元素?

ios - 是否可以在 NSFetchedResultsController 上使用后台线程进行大量读取操作以确保 UI 响应?

swift - 返回主界面 Controller 后 WKCrownSequencer 不工作

javascript - 如何在 Rxjs 中对不完整序列进行 Observable 计数

Swift Combine : One publisher consumes another, 如何让两个流都退出

ios - 如何告诉 SwiftUI View 绑定(bind)到嵌套的 Observable 对象

SwiftUI:仅当输入不为空时才启用保存按钮