【发布时间】:2020-08-19 03:05:55
【问题描述】:
我试图让一个对象监听另一个对象的属性变化。我让它按如下所示工作,但我希望观察对象对模型一无所知,只知道属性。
class Model : ObservableObject{
@Published var items: [Int] = []
}
class ObjectUsingItems{
var itemObserver: AnyCancellable?
var items: [Int] = []
func observeItems(model: Model){
itemObserver = model.$items
.sink{ newItems in
self.items = newItems
print("New Items")
}
}
}
目前我开始观察 model.items 如下 - 这很有效:
let model = Model()
let itemUser = ObjectUsingItems()
itemUser.observeItems(model: model)
model.items.append(1) // itemUser sees changes
不幸的是,我似乎无法弄清楚 observeItems 方法的参数需要什么,以便它在不了解模型的情况下工作 - 像这样:
class ObjectUsingItems{
var itemObserver: AnyCancellable?
var items: [Int] = []
func observeItems(propertyToObserve: WhatGoesHere?){
itemObserver = propertyToObserve
.sink{ newItems in
// etc.
}
}
}
然后这样称呼它:
itemUser.observeItems(XXX: model.$items)
谁能解释我需要做什么?谢谢!
【问题讨论】: