Проблема в том, что Array.Publisher
просто генерирует все элементы массива и затем завершается. Он не ждет мутаций массива.
Если вы хотите выдавать значение каждый раз, когда String
меняет его значение, вам нужно сохранить это String
в class
как @Published
и подпишитесь на издателя Published
свойства.
class StringPublisher: ObservableObject {
@Published var value: String
init(value: String) {
self.value = value
}
}
let s = StringPublisher(value: "a")
let sb = s.$value.sink(receiveValue: {
print("rec: \($0)")
})
let s0 = Timer.publish(every: 1.0, on: .main, in: .common)
.autoconnect()
.sink(receiveValue: {_ in
print("tiktok...")
s.value.append("now work!")
})
s.value.append("now work too!")