title: Simple MVVM with KVO
body: <p>I'm trying to create a simple mvvm model using kvo</p>
  
  <p>My goal is when the UITextField text changes, automatically change the UILabel text.
  But for some reason the <code>observeValue</code> function is not called</p>
  
  <pre><code>import UIKit
  class ViewController: UIViewController, UITextFieldDelegate {
  
      var viewModel : TestViewModel?
      @IBOutlet weak var LBLABEL: UILabel!
  
      override func viewDidLoad() {
          super.viewDidLoad()
          viewModel = TestViewModel()
  
          addObserver(self, forKeyPath: #keyPath(viewModel.infoText), options:  [.old, .new], context: nil)
  
          // Do any additional setup after loading the view, typically from a nib.
      }
  
      override func didReceiveMemoryWarning() {
          super.didReceiveMemoryWarning()
          // Dispose of any resources that can be recreated.
      }
  
      func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -&gt; Bool {
          viewModel?.infoText = textField.text
          return true
      }
  
  
      // MARK: - Key-Value Observing
      override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
          if keyPath == "info" {
              // Update Time Label
              LBLABEL.text = viewModel?.infoText
          }
      }
  
  }
  
  
  class TestViewModel : NSObject{
      var model : TestModel
  
      var infoText:String? {
          didSet{
              model.info = self.infoText
  
          }
      }
  
      override init() {
          model = TestModel()
      }
  }
  
  
  class TestModel {
      var info:String?
  }
  </code></pre>
  
  <p>I already tried to change the observer's declaration or even the ViewModel gets and sets and never succeeded</p>