【发布时间】:2019-07-14 16:15:08
【问题描述】:
我有一个封装对象集合的数据管理器。我想听听那个经理的变化,以及集合对象的变化。我使用PassthroughSubject 和sink 提出了解决方案,但我对Combine 很陌生,想知道它是否正确,是否有更好的方法来做到这一点。
import Combine
class Item {
var data = false {
didSet {
self.subject.send()
}
}
let subject = PassthroughSubject<Void, Never>()
}
class DataManager {
private(set) var items = [Item]() {
didSet {
self.subject.send()
}
}
let subject = PassthroughSubject<Void, Never>()
func addItem(_ item: Item) {
self.items.append(item)
item.subject.sink { [weak self] in
self?.subject.send()
}
}
}
var item = Item()
var manager = DataManager()
manager.subject.sink {
print("Received Update")
}
manager.addItem(item) // Received Update
item.data = false // Received Update
item.data = true // Received Update
【问题讨论】:
-
我也遇到了同样的问题,你有没有找到更好的方法?