我有一个发布者,我的视图的onReceive
已订阅。我也不想在onAppear
中复制逻辑,而是希望onReceive
中的发布者在首次订阅时触发。
是否可以将发布者转换为CurrentValueSubject
?这是我想要做的:
var myPublisher: CurrentValueSubject<Void, Never> {
Just(()) // Error: Cannot convert return expression of type 'Just<()>' to return type 'CurrentValueSubject<Void, Never>'
}
这是可行的还是更好的方法?
答案 0 :(得分:1)
您不能随意将发布者转换为CurrentValueSubject
,因为这是一种非常特殊的发布者类型。问问自己,您是否真的需要将myPublisher
的类型设置为CurrentValueSubject<Void, Never>
,或者是否需要AnyPublisher<Void, Never>
。
var myPublisher: AnyPublisher <Void, Never> {
Just(()).eraseToAnyPublisher()
}
或者,如果您想做的只是创建一个CurrentValueSubject
作为其初始值的()
实例,则可以使用以下方法:
var myPublisher: CurrentValueSubject<Void, Never> {
CurrentValueSubject<Void, Never>(())
}