J'essaie de faire en sorte qu'un objet écoute les modifications de la propriété d'un autre objet. Je l'ai fait fonctionner comme indiqué ci-dessous, mais je préférerais que l'objet observateur ne sache rien du modèle, seulement de la propriété.
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")
}
}
}
Pour le moment, je commence à observer le model.items comme suit - ce qui fonctionne :
let model = Model()
let itemUser = ObjectUsingItems()
itemUser.observeItems(model: model)
model.items.append(1) // itemUser sees changes
Malheureusement, je n'arrive pas à trouver ce qui doit être le paramètre de la méthode observeItems pour qu'elle fonctionne sans rien savoir du modèle - comme ceci :
class ObjectUsingItems{
var itemObserver: AnyCancellable?
var items: [Int] = []
func observeItems(propertyToObserve: WhatGoesHere?){
itemObserver = propertyToObserve
.sink{ newItems in
// etc.
}
}
}
Et ensuite l'appeler comme ça :
itemUser.observeItems(XXX: model.$items)
Quelqu'un peut-il m'expliquer ce que je dois faire ? Merci !