从另一个 CurrentValueSubject 创建一个 CurrentValueSubject

Create a CurrentValueSubject from another CurrentValueSubject

我在一个对象中有一个 CurrentValueSubject,我想要另一个 CurrentValueSubject 来复制第一个对象的更改。

我找不到一种方法可以轻松地做到这一点,而不必像这样做:

subjectA.assign(to: \.value, on: subjectB).store(in: &cancelables)

如果能够使用 subjectA 初始化 subjectB 就好了。有没有办法做这样的事情?

编辑: 例如,我认为能够做类似的事情会很棒:

let subjectB = CurrentValueSubject(from: subjectA)

我只想让第二个发布者成为第一个发布者的订阅者。示例:

let pub1 = CurrentValueSubject<String,Never>("howdy")
lazy var pub2 : AnyPublisher<String,Never> = {
    self.pub1.eraseToAnyPublisher()
}()

用法示例:

    pub1.sink {print([=11=])}.store(in: &storage)
    pub2.sink {print([=11=])}.store(in: &storage)
    delay(1) {
        self.pub1.send("hey")
        delay(2) {
            self.pub1.send("ho")
        }
    }

输出:

howdy
howdy
[delay]
hey
hey
[delay]
ho
ho

所以两个发布商都给出了相同的值,这似乎是你想要的。