title: This class is not key value coding-compliant for the key cancel
body: <p>I keep getting this error: <code>Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[&lt;FoodTracker.MealViewController 0x7faa9ed189d0&gt; setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key cancel.'</code></p>
  
  <p>I'm trying to complete the Apple developer guide to getting started with iOS apps. My code and storyboard looks exactly like theirs does in the example file. I'm hoping that a fresh eye might be able to see something I am not?</p>
  
  <pre><code>import UIKit
  import os.log
  
  class MealViewController: UIViewController, UITextFieldDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
  
      //MARK: Properties
      @IBOutlet weak var nameTextField: UITextField!
      @IBOutlet weak var photoImageView: UIImageView!
      @IBOutlet weak var ratingControl: RatingControl!
      @IBOutlet weak var saveButton: UIBarButtonItem!
      /*
       This value is either passed by 'MealTableViewController' in
       'prepare(for:sender) or constructed as part of adding a new meal.
      */
      var meal: Meal?
  
      override func viewDidLoad() {
          super.viewDidLoad()
  
          // Handle the text field's user input through delegate callbacks
          nameTextField.delegate = self
  
          // Enable save button only if text field has valid Meal name
          updateSaveButtonState()
      }
  
      //MARK: UITextFieldDelegate
      func textFieldShouldReturn(_ textField: UITextField) -&gt; Bool {
          // Hide the keyboard
          textField.resignFirstResponder()
          return true
      }
      func textFieldDidEndEditing(_ textField: UITextField) {
          updateSaveButtonState()
          navigationItem.title = textField.text
      }
      func textFieldDidBeginEditing(_ textField: UITextField) {
          // Disable save button while editing
          saveButton.isEnabled = false
      }
  
      //MARK: UIImagePickerControllerDelegate
      func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
          // Dismiss the picker if the user canceled
          dismiss(animated: true, completion: nil)
      }
      func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
          // The info dictionary may contain multiple representations of the image. You want to use the original.
          guard let selectedImage = info[UIImagePickerControllerOriginalImage] as? UIImage else {
              fatalError("Expected a dictionary containing an image, but was provided the following: \(info)")
          }
          // Set photoImageView to display the selected image
          photoImageView.image = selectedImage
          // Dismiss the picker
          dismiss(animated: true, completion: nil)
      }
  
      //MARK: Navigation
      @IBAction func cancel(_ sender: UIBarButtonItem) {
          dismiss(animated: true, completion: nil)
      }
  
  
      // Configure view controller before it's presented
      override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
          super.prepare(for: segue, sender: sender)
  
          // Configure destination view controller only when save button pressed
          guard let button = sender as? UIBarButtonItem, button === saveButton else {
              os_log("The save button was not pressed, cancelling", log: OSLog.default, type: .debug)
              return
          }
  
          let name = nameTextField.text ?? ""
          let photo = photoImageView.image
          let rating = ratingControl.rating
  
          // Set meal to be passed to MealTableViewController after unwind segue
          meal = Meal(name: name, photo: photo, rating: rating)
      }
  
      //MARK: Actions
      @IBAction func selectImageFromPhotoLibrary(_ sender: UITapGestureRecognizer) {
          // Hide the keyboard
          nameTextField.resignFirstResponder()
          // UIImagePickerController is a view controller that lets a user pick media from their photo library
          let imagePickerController = UIImagePickerController()
          // Only allow photos to be picked, not taken
          imagePickerController.sourceType = .photoLibrary
          // Make sure ViewController is notified when the user picks an image
          imagePickerController.delegate = self
          present(imagePickerController, animated: true, completion: nil)
      }
  
      //MARK: Private Methods
      private func updateSaveButtonState() {
          // Disable the save button if the text field is empty
          let text = nameTextField.text ?? ""
          saveButton.isEnabled = !text.isEmpty
      }
  }
  </code></pre>
  
  <p>There are a few other files, but please just let me know what you need because I am very new to Swift/XCode and not sure what to provide/not provide.</p>