我有一个固定类型的属性
var statusPublisher: Published<Status>.Publisher
以及其他一些状态,例如 substatus1
、substatus2
并且我希望它结合其他状态的值,例如
var statusPublisher: Published<Status>.Publisher {
$substatus1.combineLatest($substatus2).map { s1, s2 -> Status in ... }
}
但它说Cannot convert return expression of type 'Publishers.CombineLatest<Published<Substatus1>.Publisher, Published<Substatus2>.Publisher>' to return type 'Published<Status>.Publisher'
我设法用一个额外的方法解决了这个问题
var connectionStatusSubject = PassthroughSubject<Status, Never>()
我投入的
var connectionStatusPublisher: AnyPublisher<Status, Never> {
connectionStatusSubject.eraseToAnyPublisher()
}
这里有新的 AnyPublisher
,但看起来不太整洁。
有什么方法可以使它正确吗?
答案 0 :(得分:1)
http://localhost:3000
只是一种特定类型的发布者,由 Published<T>.Publisher
属性包装器创建。完全没有理由使用它作为计算属性的类型。
键入擦除 @Published
- 就像您对 AnyPublisher
所做的一样 - 除了您不需要 PassthroughSubject
:
PassthroughSubject