title: NSUserDefaults and persistency in a UITableView
body: <p>I have a quick coding question. First off, I am using XCode 8 and swift 2. Here is a quick image of my viewcontroller so you can get a better idea. <a href="https://i.stack.imgur.com/f82Ws.png" rel="nofollow noreferrer">Image of my viewcontroller</a></p>
  
  <p>In the above image, you insert a goal (text into the text field) and press submit. The submit button ("Submit Goal") inserts the text from the text field into an array. This array is then displayed in the tableview. </p>
  
  <p>My question is, how do I implement NSUserDefualts into this viewcontroller to save the array? This also needs to be able to update the array if a user deletes one of the goals from the tableview. </p>
  
  <p>Here is my code for the viewcontroller at the moment:</p>
  
  <pre><code>//
  //  VCWeeklyGoals.swift
  //  FitNote
  //
  //  Created by ---- on 9/21/16.
  //  Copyright © 2016 Haiden Stiles. All rights reserved.
  //
  
  import UIKit
  
  class VCWeeklyGoals: UIViewController, UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate {
  
      //MARK: Properties
  
  
  
  
  
  
  
  
  //DATE AND TIME
  @IBOutlet weak var labelDate: UILabel!
  var timer = NSTimer()
  
  @objc func tick() {
      labelDate.text = NSDateFormatter.localizedStringFromDate(NSDate(), dateStyle: .MediumStyle, timeStyle: .MediumStyle)
  }
  //END DATE AND TIME
  
  //BEGINNING ROUNDED BUTTONS FOR MONDAY THROUGH FRIDAY
  //@IBOutlet weak var roundedButtonMonday: UIButton!
  
  
      //ROUNDED BUTTON FOR SUBMIT GOAL
  @IBOutlet weak var roundedButtonSubmitGoal: UIButton!
      //END ROUNDED BUTTON FOR SUBMIT GOAL
  
  //END ROUNDED BUTTONS FOR MONDAY THROUGH FRIDAY
  
  
  
  
  
  
  
  //BEGINNING OF TABLE FUNCTIONS AND PROPERTIES
  
  @IBOutlet var tableView: UITableView!
  @IBOutlet var insertedGoal: UITextField!
  
  //var tableTitles = NSUserDefaults.standardUserDefaults().arrayForKey("tableTitles") as! [String]
  var tableTitles = [String]()
  
  
  
  
  @IBAction func buttonSubmitGoal(sender: UIButton) {
  
      self.view.endEditing(true)
  
      var error = ""
  
      if insertedGoal.text == "" {
  
          error = "Please enter a goal!"
      } else {
  
          tableTitles.append(insertedGoal.text!)
          self.tableView.reloadData()
      }
  
      if error != "" {
  
          let alert = UIAlertController(title:"Error In Form", message: error, preferredStyle: UIAlertControllerStyle.Alert)
          alert.addAction(UIAlertAction(title:"OK", style: .Default, handler: { action in
  
              //self.dismissViewControllerAnimated(true, completion:nil)
  
          }))
  
          self.presentViewController(alert, animated:true, completion:nil)
  
      }
  
      insertedGoal.text = ""
  
  }
  
  
  
  //func numberOfSectionsInTableView(tableView: UITableView) -&gt; Int {
  //    return 1
  //}
  
  
  func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -&gt; Int {
      return tableTitles.count
  }
  
  func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -&gt; UITableViewCell{
  
      let cell : UITableViewCell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as UITableViewCell
  
      let object = tableTitles[indexPath.row] 
      cell.textLabel!.text = object
  
      return cell
  }
  
  func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
      if editingStyle == UITableViewCellEditingStyle.Delete {
          tableTitles.removeAtIndex(indexPath.row)
          tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)
      }
  }
  
  //END OF TABLE FUNCTIONS AND PROPERTIES
  
  
  
  //OVERRIDE FUNCTIONS
  
  override func viewDidLoad() {
      super.viewDidLoad()
  
  
  
      if let temp = NSUserDefaults.standardUserDefaults().objectForKey("tableTitles") as? [String] {
          tableTitles = temp
      }
  
  
      // Do any additional setup after loading the view.
  
      //TABLE PROPERTIES
      self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
  
      self.insertedGoal.delegate = self
      tableView.delegate = self
      tableView.dataSource = self
      //END TABLE PROPERTIES
  
      //DATE PROPERTIES
      timer = NSTimer.scheduledTimerWithTimeInterval(1.0,
          target: self,
          selector: #selector(tick),
          userInfo: nil,
          repeats: true)
      //END DATE PROPERTIES
  
      //ROUNDED BUTTON FOR MONDAY THROUGH FRIDAY PROPERTIES
      //MONDAY
      //roundedButtonMonday.backgroundColor = UIColor.whiteColor()
      //roundedButtonMonday.layer.cornerRadius = 6
      //roundedButtonMonday.layer.borderWidth = 0.5
      //roundedButtonMonday.layer.borderColor = UIColor.blueColor().CGColor
  
  
          //ROUNDED BUTTON FOR SUBMIT GOAL
      roundedButtonSubmitGoal.backgroundColor = UIColor.clearColor()
      roundedButtonSubmitGoal.layer.cornerRadius = 7
      roundedButtonSubmitGoal.layer.borderWidth = 1
      roundedButtonSubmitGoal.layer.borderColor = UIColor.blueColor().CGColor
  
          //END ROUNDED BUTTON FOR SUBMIT GOAL
      //END ROUNDED BUTTON FOR MONDAY THROUGH FRIDAY PROPERTIES
  
      //DATE PICKER
  
      //END DATE PICKER
  }
  
  override func didReceiveMemoryWarning() {
      super.didReceiveMemoryWarning()
      // Dispose of any resources that can be recreated.
  }
  
  }
  </code></pre>