title: Cannot convert value of type '[Record]' to type 'Record' in coercion
body: <p>Im re-writing an iOS app I made using C# and Xamarin to Swift for obvious reasons of Xamarin's pricing, and low documentation. Following <a href="https://www.veasoftware.com/tutorials/2015/6/27/uisearchcontroller-in-swift-xcode-7-ios-9-tutorial" rel="nofollow">this tutorial</a> for including a <code>UISearchBar</code> on my <code>UITableView</code>, i ran into this error: <code>Cannot convert value of type '[Record]' to type 'Record' in coercion</code>. Record.swift is a struct file I created to store the data that I will retrieve using cloudkit, but Im not sure how this error comes to be.</p>
  
  <p>Here is the problem part of MasterViewController.swift:</p>
  
  <pre><code>func updateSearchResultsForSearchController(searchController: UISearchController) {
      self.filteredRecords.removeAll(keepCapacity: false)
  
      let searchPredicate = NSPredicate(format: "SELF CONTAINS [c] %@", searchController.searchBar.text!)
      // Here is where the error shows
      let array = (self.records as Record).filteredArrayUsingPredicate(searchPredicate)
      self.filteredRecords = array as! [Record]
  
      self.tableView.reloadData()
  }
  </code></pre>
  
  <p>Heres the full MasterViewController.swift:</p>
  
  <pre><code>import UIKit
  
  class MasterViewController: UITableViewController, UISearchResultsUpdating {
  
      var detailViewController: DetailViewController? = nil
      var resultSearchController = UISearchController()
      var records = [Record]()
      var filteredRecords = [Record]()
  
      override func viewDidLoad() {
          super.viewDidLoad()
          // Do any additional setup after loading the view, typically from a nib.
          self.navigationItem.leftBarButtonItem = self.editButtonItem()
  
          let addButton = UIBarButtonItem(barButtonSystemItem: .Add, target: self, action: "insertNewObject:")
          self.navigationItem.rightBarButtonItem = addButton
          if let split = self.splitViewController {
              let controllers = split.viewControllers
              self.detailViewController = (controllers[controllers.count-1] as! UINavigationController).topViewController as? DetailViewController
          }
  
          // #REMOVE - Testing implementation until iCloud is setup
          self.records = [
              Record(album: "The Awakening", artist: "P.O.D.",  genre: "Hardcore Rock", year: 2015, speed: "33 1/3", size: 12),
              Record(album: "Attack of The Killer B-Sides", artist: "A Day to Remember",  genre: "Post-Hardcore", year: 2010, speed: "33 1/3", size: 7),
              Record(album: "All I Want", artist: "A Day to Remember",  genre: "Post-Hardcore", year: 2011, speed: "33 1/3", size: 7),
              Record(album: "The White Stripes", artist: "The White Stripes",  genre: "Rock", year: 2003, speed: "45", size: 7),
              Record(album: "Save Rock and Roll", artist: "Fall Out Boy",  genre: "Punk Rock", year: 2013, speed: "33 1/3", size: 10),
              Record(album: "A Perfect Sky", artist: "Yellowcard",  genre: "Pop-Punk", year: 2015, speed: "33 1/3", size: 10),
              Record(album: "Noise vs Beauty", artist: "Bassnectar",  genre: "Dubstep", year: 2014, speed: "33 1/3", size: 12)
          ]
  
          // Configure the search bar controller
          self.resultSearchController = UISearchController(searchResultsController: nil)
          self.resultSearchController.searchResultsUpdater = self
          self.resultSearchController.dimsBackgroundDuringPresentation = false
          self.resultSearchController.searchBar.sizeToFit()
  
          self.tableView.tableHeaderView = self.resultSearchController.searchBar
  
          // Reload the data upon startup
          self.tableView.reloadData()
      }
  
      override func viewWillAppear(animated: Bool) {
          self.clearsSelectionOnViewWillAppear = self.splitViewController!.collapsed
          super.viewWillAppear(animated)
      }
  
      override func didReceiveMemoryWarning() {
          super.didReceiveMemoryWarning()
          // Dispose of any resources that can be recreated.
      }
  
  //    func insertNewObject(sender: AnyObject) {
  //        objects.insert(NSDate(), atIndex: 0)
  //        let indexPath = NSIndexPath(forRow: 0, inSection: 0)
  //        self.tableView.insertRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)
  //    }
  
      // MARK: - Segues
  
      override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
          if segue.identifier == "showDetail" {
              if let indexPath = self.tableView.indexPathForSelectedRow {
                  let object = records[indexPath.row]
                  let controller = (segue.destinationViewController as! UINavigationController).topViewController as! DetailViewController
                  controller.detailItem = object
                  controller.navigationItem.leftBarButtonItem = self.splitViewController?.displayModeButtonItem()
                  controller.navigationItem.leftItemsSupplementBackButton = true
              }
          }
      }
  
      // MARK: - Table View
  
      override func numberOfSectionsInTableView(tableView: UITableView) -&gt; Int {
          return 1
      }
  
      override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -&gt; Int {
          if (self.resultSearchController.active) {
              return self.filteredRecords.count
          } else {
              return self.records.count
          }
      }
  
      override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -&gt; UITableViewCell {
          let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell
  
          if (self.resultSearchController.active) {
              let object = filteredRecords[indexPath.row]
              cell.textLabel!.text = object.album
              cell.detailTextLabel!.text = object.artist
              cell.accessoryType = UITableViewCellAccessoryType.DisclosureIndicator
          } else {
              let object = records[indexPath.row]
              cell.textLabel!.text = object.album
              cell.detailTextLabel!.text = object.artist
              cell.accessoryType = UITableViewCellAccessoryType.DisclosureIndicator
          }
  
          return cell
      }
  
      override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -&gt; Bool {
          // Return false if you do not want the specified item to be editable.
          return true
      }
  
      override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
          if editingStyle == .Delete {
              records.removeAtIndex(indexPath.row)
              tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
          } else if editingStyle == .Insert {
              // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view.
          }
      }
  
      func updateSearchResultsForSearchController(searchController: UISearchController) {
          self.filteredRecords.removeAll(keepCapacity: false)
  
          let searchPredicate = NSPredicate(format: "SELF CONTAINS [c] %@", searchController.searchBar.text!)
          let array = (self.records as Record).filteredArrayUsingPredicate(searchPredicate)
          self.filteredRecords = array as! [Record]
  
          self.tableView.reloadData()
      }
  }
  </code></pre>
  
  <p>And Record.swift:</p>
  
  <pre><code>import Foundation
  
  struct Record {
      let album : String
      let artist : String
      let genre : String
      let year : Int
      let speed : String
      let size : Int
  }
  </code></pre>
  
  <p>Hopefully it will be a simple fix. if not, are there any tutorial suggestions? or other places I should ask this instead?</p>