当たり前といえば当たり前なんですが、 iOSのKVO(addObserver(_:forKeyPath:options:context:))はObjective-CのNSObjectのメソッドなので、指定するkeyPathはObjective-Cのプロパティ名じゃないとだめです。
例えばUIViewのisHiddenをKVOしたい場合は↓のように、isHidden
ではなくhidden
になります。
// Swift3以前 view.addObserver(self, forKeyPath: "hidden", options: [], context: nil)
// Swift3以降 view.addObserver(self, forKeyPath: #keyPath(UISwitch.hidden), options: [], context: nil)
iOSのフレームワークのクラスに対してKVOを使う際は、補完に頼るとミスることがあるので、Objective-Cの仕様も確認しましょう (#keyPathがもうちょい賢ければ・・)
addObserver(_:forKeyPath:options:context:) - NSObject | Apple Developer Documentation