W większości przypadków, jeśli masz kontrolę nad zmienną wspierającą, wolisz Variable
do używania rx_observe
.
class ViewController: UIViewController {
var myArray : Variable<NSArray>!
}
Pierwszy raz użyjesz myArray, byś asign to jak tak
myArray = Variable(["a"])
Następnie, jeśli chcesz zmienić jego wartość
myArray.value = ["b"]
I można łatwo zaobserwować jego zmiany, przy użyciu
Jeśli naprawdę chcesz użyć rx_observe
(może dlatego, że zmienna jest używana w innym miejscu w twoim programie i nie chcesz zmieniać interfejsu API kontrolera widoku), musisz zadeklarować myArray
jako dynamic
(inne wymaganie to że klasa hostingu jest dzieckiem o numerze NSObject
, tutaj UIViewController
spełnia to wymaganie). KVO nie jest domyślnie zaimplementowany w trybie swift, a korzystanie z dynamicznego zapewnia dostęp odbywa się za pomocą środowiska wykonawczego Object-c, w którym obsługiwane są zdarzenia KVO.
class ViewController: UIViewController {
dynamic var myArray: NSArray!
}
Dokumentacja na ten temat można znaleźć here